汇编课件第6章数值与非数值程序设计.ppt

上传人:小飞机 文档编号:6304445 上传时间:2023-10-15 格式:PPT 页数:27 大小:427KB
返回 下载 相关 举报
汇编课件第6章数值与非数值程序设计.ppt_第1页
第1页 / 共27页
汇编课件第6章数值与非数值程序设计.ppt_第2页
第2页 / 共27页
汇编课件第6章数值与非数值程序设计.ppt_第3页
第3页 / 共27页
汇编课件第6章数值与非数值程序设计.ppt_第4页
第4页 / 共27页
汇编课件第6章数值与非数值程序设计.ppt_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《汇编课件第6章数值与非数值程序设计.ppt》由会员分享,可在线阅读,更多相关《汇编课件第6章数值与非数值程序设计.ppt(27页珍藏版)》请在三一办公上搜索。

1、2023/10/15,1,第6章 数值与非数值程序设计,2023/10/15,2,数值计算程序设计,多字节数据的加/减法运算在以DAT0和DAT1开始的字节型无符号数据,长度都是8字节,且低字节存放在低地址,高字节存放在高地址。编程求和,结果存放在以DAT2开始的缓冲区设计分析从低字节开始执行加法运算,且低字节可能会产生进位,应采用带进位的加法指令。对应字节的加法运算的操作相同,采用循环结构,2023/10/15,3,多字节数据的加/减法运算,定义数据,DATA SEGMENT DAT0DB 12H,35H,82H,36H,49H,27H,26H,66H DAT1DB 75H,82H,19H,

2、41H,32H,65H,33H,71H DAT2DB 9 DUP(0)DATA ENDS,即将数组 DAT0 和数组 DAT1 中的元素值一一取出对应相加,并存储在数组DAT2对应元素中DAT0SI+DAT1SI DAT2SI,2023/10/15,4,多字节数据的加法运算,主程序设计,MOVSI,0 MOV CX,8 CLCNEXT:MOV AL,DAT0SI ADC AL,DAT1SI MOV DAT2SI,AL INC SI LOOP NEXT MOV AL,0 ADC AL,0 MOV DAT2SI,AL,2023/10/15,5,多字节数据的减法运算,主程序设计,MOVSI,0 MO

3、V CX,8 CLCNEXT:MOV AL,DAT0SI SBB AL,DAT1SI MOV DAT2SI,AL INC SI LOOP NEXT MOV AL,0 SBB AL,0 MOV DAT2SI,AL,2023/10/15,6,多字节数据的加/减法运算,多字节BCD码的运算在以DAT0和DAT1开始的缓冲区中各有一组压缩的BCD码,字节长度为8,低位数位于低地址。编程求和,结果存在DAT2开始的缓冲区。程序分析同样使用多字节的运算方法加法运算完成后须对和进行BCD码调整,加法用DAA、减法用DAS且被转换的数据存储在AL中,2023/10/15,7,多字节数据的加/减法运算,定义数据

4、,DATA SEGMENTDAT0DB 12H,35H,82H,36H,49H,27H,26H,66HDAT1DB 75H,82H,19H,41H,32H,65H,33H,71HRSLTDB 9 DUP(0)DATA ENDS,主程序设计,MOV SI,0MOV CX,8CLCNEXT:MOV AL,DAT0SIADC AL,DAT1SIDAAMOV RSLTSI,ALINC SILOOP NEXTMOV AL,0ADC AL,0MOV RSLTSI,AL,2023/10/15,8,数值计算程序设计,乘法运算在内存字单元W1和字节单元B1各有一个有符号数,分别为-128H 和 0A1H。计算两

5、者的乘积,并将结果存储在以W2 开始的字单元中。,2023/10/15,9,数值计算程序设计,乘法运算在以 DAT 为首地址的缓冲区中有一个 6 字节的二进制无符号数,将其与字节单元 B1中的一个无符号数相乘。结果存储在RSLT开始的缓冲区,2023/10/15,10,数值计算程序设计,除法运算在内存字单元W1和W2各有一个有符号数,分别为-1A28H 和 2A1H。求其商和余数,结果存入RSLT开始的两个字单元,DATA SEGMENTW1 DW-1A28HW2 DW 2A1HRSLT DW?DATA ENDS,2023/10/15,11,数值计算程序设计,除法运算举例在 DAT 为首地址的

6、缓冲区中有一个 6 位非压缩的 BCD 数 954328,将其除以字节单元 B1 中非压缩的 BCD 数 5,结果显示在屏幕上。被除数以高位存在低地址AAD:AX中数据作为被除数进行除法前,AAD指令将AX中的两个非压缩的BCD数转换成二进制数。(AH10+ALAL),2023/10/15,12,数值计算程序设计,除法运算举例数据段定义,DATA SEGMENT RSLT DB 6 DUP(?)DAT DB 09H,05H,04H,03H,02H,08HB1DB 05HDATA ENDS,主程序设计,START:MOV AX,DATAMOV DS,AXMOVSI,0;设置指针MOVDL,B1;

7、设置除数MOVCX,6;设置循环次数CALLBCDDV,2023/10/15,13,数值计算程序设计,子程序设计,BCDDVPROCNEARXORAX,AX;AH清零NEXT:MOVAL,DATSI;取被除数AAD;BCD数转为二进制DIVDL;无符号除法MOVRSLTSI,AL;存储商INCSI;修改指针LOOPNEXT;循环控制RETBCDDVENDP,2023/10/15,14,非数值处理程序设计,常见的非数值处理大小写字母间的相互转换不同进制间的相互转换数据与ASCII码间的相互转换字符与字符串的处理表格的处理及检索排序等,2023/10/15,15,数据与ASCII码的转换,二进制

8、ASCII码编写子程序,将入口参数AL中的二进制数以十六进制形式显示到屏幕。分析4位二进制数对应一位十六进制数,可将AL中的低4位和高4位作为入口参数分别处理。子过程CHGE只处理AL参数中的低 4 位,实现转换成十六进制数对应的字符并输出到屏幕。,2023/10/15,16,数据与ASCII码的转换:子程序,CHGEPROCNEARPUSHDXPUSHAXANDAL,0FHCMPAL,0AHJBAD30ADDAL,37HJMPDISPAD30:ADDAL,30HDISP:MOVDL,ALMOVAH,2INT 21HPOPAXPOP DXRETCHGEENDP,2023/10/15,17,数据

9、与ASCII码的转换:主程序,主程序设计,START:MOV AX,DATAMOV DS,AXMOV AL,DATMOV BL,AL;备份数据MOVCL,4SHRAL,CL;取AL的高4位CALLCHGEMOVAL,BLCALLCHGEMOV AH,4CHINT 21H,2023/10/15,18,数据与BCD码的转换,常见的问题输入数据是BCD码,并在程序中进行算术运算,结果以BCD码输出。输入的BCD码 字符序列 二进制数 算术运算 BCD码 字符序列 输出到屏幕。例6.12在内存BUFF单元开始存放着一个4位非压缩的BCD数(高位在低地址)。编程实现将其转换为二进制数并存入RSLT字单元

10、中。,2023/10/15,19,数据与BCD码的转换,数据段定义,START:MOV AX,DATAMOV DS,AXMOVSI,0;入口参数CALLCHGE;调用子程序MOVRSLT,BX;存储结果,主程序,DATA SEGMENTDATDB 01H,02H,03H,04HRSLTDW?DATA ENDS,2023/10/15,20,子程序设计,CHGEPROC NEAR;INPUT:SI;OUTPUT:BXMOVAH,0MOVCX,1000MOVAL,DATSIMULCX;计算最高(千)位的值MOVBX,AXMOVCL,100MOVAL,DATSI+1MULCL;计算次高(百)位的值AD

11、DBX,AXMOVCL,10MOVAL,DATSI+2MULCL;计算次低(十)位的值ADDBX,AXMOVAL,DATSI+3XORAH,AHADDBX,AX;加上最低(个)位RETCHGEENDP,2023/10/15,21,数据与BCD码的转换,将从键盘输入4位非压缩的BCD码转化为二进制数,并存在RSLT字型变量中。,INPUTPROCNEAR PUSHSIAGAIN:MOVAH,1 INT 21H;输入字符,以回车符结束 CMPAL,0DH JZDONE SUBAL,30H MOVDATSI,AL INCSI JMPAGAINDONE:POPSI RETINPUTENDP,2023/

12、10/15,22,字符串处理,字符串处理字符或字符串的查找、比较、统计、复制、添加和删除等。可以使用串操作指令完成对字符串的操作也可以使用其他指令及循环结构实现操作例子:自BUFF开始的内存单元中存有一个ASCII码字符串,长度为COUNT,统计其中含有多少个字符串“OK”,并将统计结果保存到RSLT中。,2023/10/15,23,字符串处理,数据段定义,DATA SEGMENT BUF DB OOKREOKKOOKOKVCKQOROK*OKOKOOK RSLT DW?COUNT EQU RSLT-BUFDATA ENDS,2023/10/15,24,CODE SEGMENTASSUME C

13、S:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOVSI,OFFSET BUF;设置指针MOVCX,COUNT;字符个数MOVBX,0;保存“OK”的个数LOOP1:MOVAL,SI;取操作数CMPAL,OJNZNEXT;不是O则测试下一个字符INCSIDECCXJZDONE;是否测试结束MOVAL,SI;取下一个字符CMPAL,K;查看下一个是不是KJNZLOOP1INCBX;记录一个NEXT:INCSILOOPLOOP1DONE:MOVRSLT,BXMOV AH,4CHINT 21HCODE ENDSEND START,代码段设计,2023/10/15,2

14、5,检索与排序,检索也称为查找,是指在一批数据中查找某个关键的数据项,该数据项称为关键字。检索举例在以DAT为首地址的字缓冲区中有一个数组,数组长度存于LENTH单元,编程查找数组中是否与W1单元中数据相同的数。若有则将其在数组中的序号送RSLT单元中,否则将RSLT单元置为0FFFFH。,2023/10/15,26,检索举例,数据段定义,DATA SEGMENT DAT DW 1234H,0ABCDH,265H,12H,0FFH,0FFFH,26H,0BBBH DW 5678H,222H,3333H,444H,55H,6H,77H,0,0FH,09H LENTH DW 12H W1 DW 0

15、FH RSLT DW?DATA ENDS,DATA SEGMENT DAT DW 1234H,0ABCDH,265H,12H,0FFH,0FFFH,26H,0BBBH DW 5678H,222H,3333H,444H,55H,6H,77H,0,0FH,09H LENTH DW 12H W1 DW 0FH RSLT DW?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOVSI,0MOVAX,W1MOVCX,LENTHNEXT:CMPAX,DATSIJEFINDADD SI,2LOOPNEXTMOVSI,0FFFFHFIND:MOVRSLT,SIMOV AH,4CHINT 21HCODE ENDSEND START,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号