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

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

《汇编课件第6章数值与非数值程序设计.ppt》由会员分享,可在线阅读,更多相关《汇编课件第6章数值与非数值程序设计.ppt(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第6章章 数值与非数值程序设计数值与非数值程序设计2023/4/171山东工商学院数值计算程序设计数值计算程序设计o多字节数据的加多字节数据的加/减法运算减法运算n在以在以DAT0和和DAT1开始的字节型无符号数据,开始的字节型无符号数据,长长度都是度都是8字节,且低字节存放在低地址,高字节存字节,且低字节存放在低地址,高字节存放在高地址。放在高地址。n编程求和,结果存放在以编程求和,结果存放在以DAT2开始的缓冲区开始的缓冲区o设计分析设计分析n从低字节开始执行加法运算,且低字节可能会产从低字节开始执行加法运算,且低字节可能会产生进位,应采用带进位的加法指令。生进位,应采用带进位的加法指令

2、。n对应字节的加法运算的操作相同,采用循环结构对应字节的加法运算的操作相同,采用循环结构2023/4/172山东工商学院多字节数据的加多字节数据的加/减法运算减法运算o定义数据定义数据DATA SEGMENTDATA SEGMENT DAT0DAT0DB DB 12H12H,35H,35H,82H82H,36H,49H,27H,26H,66H,36H,49H,27H,26H,66H DAT1DAT1DB DB 75H75H,82H,82H,19H19H,41H,32H,65H,33H,71H,41H,32H,65H,33H,71H DAT2DAT2DB 9 DUP(0)DB 9 DUP(0)D

3、ATA ENDSDATA ENDS即将数组即将数组 DAT0 和数组和数组 DAT1 中的元素值一一取出对应相中的元素值一一取出对应相加,并存储在数组加,并存储在数组DAT2对应元素中对应元素中DAT0SI+DAT1SI DAT2SI2023/4/173山东工商学院多字节数据的加法运算多字节数据的加法运算o主程序设计主程序设计 MOVMOVSISI,0,0 MOV MOV CX,8CX,8 CLC CLCNEXT:NEXT:MOV MOV AL,DAT0AL,DAT0SISI ADC ADC AL,DAT1AL,DAT1SISI MOV MOV DAT2DAT2SISI,AL,AL INC I

4、NC SISI LOOP LOOP NEXTNEXT MOV MOV AL,0AL,0 ADC ADC AL,0AL,0 MOV MOV DAT2DAT2SISI,AL,AL2023/4/174山东工商学院多字节数据的减法运算多字节数据的减法运算o主程序设计主程序设计 MOVMOVSISI,0,0 MOV MOV CX,8CX,8 CLC CLCNEXT:NEXT:MOV MOV AL,DAT0AL,DAT0SISI SBBSBB AL,DAT1AL,DAT1SISI MOV MOV DAT2DAT2SISI,AL,AL INC INC SISI LOOP LOOP NEXTNEXT MOV

5、MOV AL,0AL,0 SBBSBB AL,0AL,0 MOV MOV DAT2DAT2SISI,AL,AL2023/4/175山东工商学院多字节数据的加多字节数据的加/减法运算减法运算o多字节多字节BCD码的运算码的运算n在以在以DAT0和和DAT1开始的缓冲区中各有一组压缩开始的缓冲区中各有一组压缩的的BCD码,字节长度为码,字节长度为8,低位数位于低地址。,低位数位于低地址。n编程求和,结果存在编程求和,结果存在DAT2开始的缓冲区。开始的缓冲区。o程序分析程序分析n同样使用多字节的运算方法同样使用多字节的运算方法n加法运算完成后须对和进行加法运算完成后须对和进行BCD码调整,加法用码

6、调整,加法用DAA、减法用、减法用DAS且被转换的数据存储在且被转换的数据存储在AL中中2023/4/176山东工商学院多字节数据的加多字节数据的加/减法运算减法运算o定义数据定义数据DATA SEGMENTDATA SEGMENTDAT0DAT0 DB 12H,35H,82H,36H,49H,27H,26H,66HDB 12H,35H,82H,36H,49H,27H,26H,66HDAT1DAT1 DB 75H,82H,19H,41H,32H,65H,33H,71HDB 75H,82H,19H,41H,32H,65H,33H,71HRSLTRSLT DB 9 DUP(0)DB 9 DUP(0

7、)DATA ENDSDATA ENDSo主程序设计主程序设计MOV SI,0MOV SI,0MOV CX,8MOV CX,8CLCCLCNEXT:NEXT:MOV AL,DAT0SIMOV AL,DAT0SIADC AL,DAT1SIADC AL,DAT1SIDAADAAMOV RSLTSI,ALMOV RSLTSI,ALINC SIINC SILOOP NEXTLOOP NEXTMOV AL,0MOV AL,0ADC AL,0ADC AL,0MOV RSLTSI,ALMOV RSLTSI,AL2023/4/177山东工商学院数值计算程序设计数值计算程序设计o乘法运算乘法运算n在内存字单元在内

8、存字单元W1和字节单元和字节单元B1各有一个有符号各有一个有符号数,分别为数,分别为-128H 和和 0A1H。n计算两者的乘积,并将结果存储在以计算两者的乘积,并将结果存储在以W2 开始的开始的字单元中。字单元中。2023/4/178山东工商学院数值计算程序设计数值计算程序设计o乘法运算乘法运算n在以在以 DAT 为首地址的缓冲区中有一个为首地址的缓冲区中有一个 6 字节的二字节的二进制无符号数,将其与字节单元进制无符号数,将其与字节单元 B1中的一个无符中的一个无符号数相乘。号数相乘。n结果存储在结果存储在RSLT开始的缓冲区开始的缓冲区2023/4/179山东工商学院数值计算程序设计数值

9、计算程序设计o除法运算除法运算n在内存字单元在内存字单元W1和和W2各有一个有符号数,分别各有一个有符号数,分别为为-1A28H 和和 2A1H。n求其商和余数,结果存入求其商和余数,结果存入RSLT开始的两个字单元开始的两个字单元DATA SEGMENTDATA SEGMENTW1W1 DW DW -1A28H -1A28HW2W2 DW DW 2A1H 2A1HRSLTRSLT DW DW?DATA ENDSDATA ENDS2023/4/1710山东工商学院数值计算程序设计数值计算程序设计o除法运算举例除法运算举例n在在 DAT 为首地址的缓冲区中有一个为首地址的缓冲区中有一个 6 位非

10、压缩的位非压缩的 BCD 数数 954328,将其除以字节单元,将其除以字节单元 B1 中非压缩中非压缩的的 BCD 数数 5,结果显示在屏幕上。,结果显示在屏幕上。n被除数以高位存在低地址被除数以高位存在低地址nAAD:AX中数据作为被除数进行除法前,中数据作为被除数进行除法前,AAD指令将指令将AX中的两个非压缩的中的两个非压缩的BCD数转换成二进制数转换成二进制数。(数。(AH10+ALAL)09050403020809050403020805052023/4/1711山东工商学院数值计算程序设计数值计算程序设计o除法运算举例除法运算举例n数据段定义数据段定义DATA SEGMENTDA

11、TA SEGMENT RSLT RSLT DB 6 DUP(?)DB 6 DUP(?)DAT DB 09H,05H,04H,03H,02H,08HDAT DB 09H,05H,04H,03H,02H,08HB1B1DB 05HDB 05HDATA ENDSDATA ENDSn主程序设计主程序设计START:START:MOV MOV AX,DATAAX,DATAMOV MOV DS,AXDS,AXMOVMOVSI,0SI,0;设置指针设置指针MOVMOVDL,B1DL,B1;设置除数设置除数MOVMOVCX,6CX,6;设置循环次数设置循环次数CALLCALL BCDDVBCDDV2023/4

12、/1712山东工商学院数值计算程序设计数值计算程序设计o子程序设计子程序设计BCDDVBCDDVPROCPROCNEARNEARXORXOR AX,AXAX,AX;AH;AH清零清零NEXT:NEXT:MOVMOV AL,DATSIAL,DATSI;取被除数取被除数AADAAD;BCD;BCD数转为二进制数转为二进制DIVDIVDLDL;无符号除法无符号除法MOVMOV RSLTSI,ALRSLTSI,AL;存储商存储商INCINCSISI;修改指针修改指针LOOPLOOPNEXTNEXT;循环控制循环控制RETRETBCDDVBCDDVENDPENDP2023/4/1713山东工商学院非数值

13、处理程序设计非数值处理程序设计o常见的非数值处理常见的非数值处理n大小写字母间的相互转换大小写字母间的相互转换n不同进制间的相互转换不同进制间的相互转换n数据与数据与ASCII码间的相互转换码间的相互转换n字符与字符串的处理字符与字符串的处理n表格的处理及检索排序等表格的处理及检索排序等2023/4/1714山东工商学院数据与数据与ASCII码的转换码的转换o二进制二进制 ASCII码码n编写子程序,将入口参数编写子程序,将入口参数AL中的二进制数以十六中的二进制数以十六进制形式显示到屏幕。进制形式显示到屏幕。o分析分析n4位二进制数对应一位十六进制数,可将位二进制数对应一位十六进制数,可将A

14、L中的中的低低4位和高位和高4位作为入口参数分别处理。位作为入口参数分别处理。n子过程子过程CHGE只处理只处理AL参数中的低参数中的低 4 位,实现转位,实现转换成十六进制数对应的字符并输出到屏幕。换成十六进制数对应的字符并输出到屏幕。2023/4/1715山东工商学院数据与数据与ASCII码的转换:子程序码的转换:子程序CHGECHGEPROCPROCNEARNEARPUSHPUSHDXDXPUSHPUSHAXAXANDANDAL,0FHAL,0FHCMPCMPAL,0AHAL,0AHJBJBAD30AD30ADDADDAL,37HAL,37HJMPJMPDISPDISPAD30:AD30

15、:ADDADDAL,30HAL,30HDISP:DISP:MOVMOVDL,ALDL,ALMOVMOVAH,2AH,2INT INT 21H21HPOPPOPAXAXPOP POP DXDXRETRETCHGECHGEENDPENDP2023/4/1716山东工商学院数据与数据与ASCII码的转换:主程序码的转换:主程序o主程序设计主程序设计START:START:MOV MOV AX,DATAAX,DATAMOV MOV DS,AXDS,AXMOV MOV AL,DATAL,DATMOV MOV BL,ALBL,AL;备份数据备份数据MOVMOVCL,4CL,4SHRSHRAL,CLAL,C

16、L;取取ALAL的高的高4 4位位CALLCALLCHGECHGEMOVMOVAL,BLAL,BLCALLCALLCHGECHGEMOV MOV AH,4CHAH,4CHINT INT 21H21H2023/4/1717山东工商学院数据与数据与BCD码的转换码的转换o常见的问题常见的问题n输入数据是输入数据是BCD码,并在程序中进行算术运算,码,并在程序中进行算术运算,结果以结果以BCD码输出。码输出。n输入的输入的BCD码码 字符序列字符序列 二进制数二进制数 算术运算术运算算 BCD码码 字符序列字符序列 输出到屏幕。输出到屏幕。o例例6.12n在内存在内存BUFF单元开始存放着一个单元开

17、始存放着一个4位非压缩的位非压缩的BCD数(高位在低地址)。数(高位在低地址)。n编程实现将其转换为二进制数并存入编程实现将其转换为二进制数并存入RSLT字单元字单元中。中。2023/4/1718山东工商学院数据与数据与BCD码的转换码的转换o数据段定义数据段定义START:START:MOV MOV AX,DATAAX,DATAMOV MOV DS,AXDS,AXMOVMOVSI,0SI,0;入口参数;入口参数CALLCALL CHGECHGE;调用子程序;调用子程序MOVMOVRSLT,BXRSLT,BX;存储结果;存储结果o主程序主程序DATA SEGMENTDATA SEGMENTDA

18、TDATDB 01H,02H,03H,04HDB 01H,02H,03H,04HRSLTRSLT DW?DW?DATA ENDSDATA ENDS2023/4/1719山东工商学院o子程序设计子程序设计CHGECHGE PROC PROC NEARNEAR;INPUT:SI;OUTPUT:BX;INPUT:SI;OUTPUT:BXMOVMOVAH,0AH,0MOVMOVCX,1000CX,1000MOVMOVAL,DATSIAL,DATSIMULMULCXCX;计算最高(千)位的值;计算最高(千)位的值MOVMOVBX,AXBX,AXMOVMOVCL,100CL,100MOVMOVAL,DAT

19、SI+1AL,DATSI+1MULMULCLCL;计算次高;计算次高(百)(百)位的值位的值ADDADDBX,AXBX,AXMOVMOVCL,10CL,10MOVMOVAL,DATSI+2AL,DATSI+2MULMULCLCL;计算次低;计算次低(十)(十)位的值位的值ADDADDBX,AXBX,AXMOVMOVAL,DATSI+3AL,DATSI+3XORXORAH,AHAH,AHADDADDBX,AXBX,AX;加上最低(个)位;加上最低(个)位RETRETCHGECHGE ENDPENDP2023/4/1720山东工商学院数据与数据与BCD码的转换码的转换o将从键盘输入将从键盘输入4位

20、非压缩的位非压缩的BCD码转化为二进制码转化为二进制数,并存在数,并存在RSLT字型变量中。字型变量中。INPUTINPUT PROCPROC NEARNEAR PUSH PUSHSISIAGAIN:MOVAGAIN:MOVAH,1AH,1 INT INT 21H21H;输入字符,以回车符结束;输入字符,以回车符结束 CMP CMPAL,0DHAL,0DH JZ JZDONEDONE SUB SUBAL,30HAL,30H MOV MOVDATDATSISI,AL,AL INC INCSISI JMP JMPAGAINAGAINDONE:DONE:POP POPSISI RETRETINPUT

21、INPUT ENDPENDP2023/4/1721山东工商学院字符串处理字符串处理o字符串处理字符串处理n字符或字符串的查找、比较、统计、复制、添加字符或字符串的查找、比较、统计、复制、添加和删除等。和删除等。n可以使用串操作指令完成对字符串的操作可以使用串操作指令完成对字符串的操作n也可以使用其他指令及循环结构实现操作也可以使用其他指令及循环结构实现操作o例子:例子:n自自BUFF开始的内存单元中存有一个开始的内存单元中存有一个ASCII码字符码字符串,长度为串,长度为COUNT,统计其中含有多少个字符串,统计其中含有多少个字符串“OK”,并将统计结果保存到,并将统计结果保存到RSLT中。中

22、。2023/4/1722山东工商学院字符串处理字符串处理o数据段定义数据段定义DATA SEGMENTDATA SEGMENT BUF DB OOKREOKKOOKOKVCKQOROK*OKOKOOK BUF DB OOKREOKKOOKOKVCKQOROK*OKOKOOK RSLT DW?RSLT DW?COUNT EQU RSLT-BUF COUNT EQU RSLT-BUFDATA ENDSDATA ENDS2023/4/1723山东工商学院CODE SEGMENTCODE SEGMENTASSUME CS:CODE,DS:DATAASSUME CS:CODE,DS:DATASTART:

23、START:MOV MOV AX,DATAAX,DATAMOV MOV DS,AXDS,AXMOVMOVSI,OFFSET BUFSI,OFFSET BUF;设置指针;设置指针MOVMOVCX,COUNTCX,COUNT;字符个数;字符个数MOVMOVBX,0BX,0;保存保存“OK”OK”的个数的个数LOOP1:LOOP1:MOVMOVAL,SIAL,SI;取操作数;取操作数CMPCMPAL,OAL,OJNZJNZNEXTNEXT ;不是;不是OO则测试下一个字符则测试下一个字符INCINCSISIDECDECCXCXJZJZDONE DONE ;是否测试结束;是否测试结束MOVMOVAL,

24、SIAL,SI ;取下一个字符;取下一个字符CMPCMPAL,KAL,K ;查看下一个是不是查看下一个是不是KJNZJNZLOOP1LOOP1INCINCBXBX ;记录一个;记录一个NEXT:NEXT:INCINCSISILOOPLOOP LOOP1LOOP1DONE:DONE:MOVMOVRSLT,BXRSLT,BXMOV MOV AH,4CHAH,4CHINT INT 21H21HCODE ENDSCODE ENDSEND END STARTSTART代码段设计代码段设计2023/4/1724山东工商学院检索与排序检索与排序o检索检索n也称为查找,是指在一批数据中查找某个关键的也称为查找

25、,是指在一批数据中查找某个关键的数据项,该数据项称为关键字。数据项,该数据项称为关键字。o检索举例检索举例n在以在以DAT为首地址的字缓冲区中有一个数组,数为首地址的字缓冲区中有一个数组,数组长度存于组长度存于LENTH单元,编程查找数组中是否与单元,编程查找数组中是否与W1单元中数据相同的数。单元中数据相同的数。n若有则将其在数组中的序号送若有则将其在数组中的序号送RSLT单元中,否则单元中,否则将将RSLT单元置为单元置为0FFFFH。2023/4/1725山东工商学院检索举例检索举例o数据段定义数据段定义DATA SEGMENTDATA SEGMENT DAT DAT DW 1234H,

26、0ABCDH,265H,12H,0FFH,0FFFH,26H,0BBBH DW 1234H,0ABCDH,265H,12H,0FFH,0FFFH,26H,0BBBH DW 5678H,222H,3333H,444H,55H,6H,77H,0,0FH,09H DW 5678H,222H,3333H,444H,55H,6H,77H,0,0FH,09H LENTH DW 12H LENTH DW 12H W1 W1 DW 0FH DW 0FH RSLT RSLT DW?DW?DATA ENDSDATA ENDS2023/4/1726DATA SEGMENTDATA SEGMENT DATDAT DW

27、 1234H,0ABCDH,265H,12H,0FFH,0FFFH,26H,0BBBH DW 1234H,0ABCDH,265H,12H,0FFH,0FFFH,26H,0BBBH DW 5678H,222H,3333H,444H,55H,6H,77H,0,0FH,09H DW 5678H,222H,3333H,444H,55H,6H,77H,0,0FH,09H LENTH DW 12H LENTH DW 12H W1 W1 DW 0FH DW 0FH RSLT RSLT DW?DW?DATA ENDSDATA ENDSCODE SEGMENTCODE SEGMENTASSUME CS:CODE

28、,DS:DATAASSUME CS:CODE,DS:DATASTART:START:MOV MOV AX,DATAAX,DATAMOV MOV DS,AXDS,AXMOVMOVSI,0SI,0MOVMOVAX,W1AX,W1MOVMOVCX,LENTHCX,LENTHNEXT:NEXT:CMPCMPAX,DATSIAX,DATSIJEJEFINDFINDADD ADD SI,2SI,2LOOPLOOP NEXTNEXTMOVMOVSI,0FFFFHSI,0FFFFHFIND:FIND:MOVMOVRSLT,SIRSLT,SIMOV AH,4CHMOV AH,4CHINT 21HINT 21HCODE ENDSCODE ENDSEND STARTEND START2023/4/1727

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁