[高等教育]第332-算术运算类指令.ppt

[高等教育]第332-算术运算类指令.ppt

ID:52445662

大小:312.01 KB

页数:69页

时间:2020-04-07

[高等教育]第332-算术运算类指令.ppt_第1页
[高等教育]第332-算术运算类指令.ppt_第2页
[高等教育]第332-算术运算类指令.ppt_第3页
[高等教育]第332-算术运算类指令.ppt_第4页
[高等教育]第332-算术运算类指令.ppt_第5页
资源描述:

《[高等教育]第332-算术运算类指令.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第三章80x86的指令系统(二)返回目录二、算术运算类指令p36二算术运算类指令1.加法指令2.减法指令3.乘法指令4.除法指令5.十进制调整指令返回本节首页算术指令的寻址方式:p36双操作数指令的两个操作数中除源操作数为立即数的情况外,必须有一个操作数在寄存器中。单操作数指令不允许使用立即数方式。1.加法运算指令p36(1)加指令ADD(add)(2)带进位加指令ADC(addwithcarry)(3)非压缩十进制数的加法校正指令AAA(4)加法十进制校正指令DAA(5)加1指令INC(increment)(6)交换并相加XADD(exchangeandadd)返回本节首页1.加

2、法(1)加法指令的一般格式ADDdst,src功能:dstdst+src该指令对源操作数和目的操作数的内容执行一个字节或字的加法,并把结果放回原来存放目的操作数的地方。源操作数可以是立即数、寄存器或存储单元。目的操作数可以是寄存器或存储单元。例如:ADDAL,30H;AL内容加立即数30H,结果存回到AL中ADDAX,SI;AX和SI两寄存器内容相加,结果存回到AX中ADD[BX+DI],AX;BX+DI和BX+DI+1两存储单元内容和AX内容相加,结果存回到上述两存储单元中(2)带进位加法指令的一般格式ADCdst,src功能:dstdst+src+CF该指令和ADD指令类似

3、,只是在两个操作数相加时,要把标志寄存器中进位标志CF的当前值加上去,结果放回原来存放目的操作数的地方。该指令主要用于多字节运算中。例如,见下页:例如,有两个四字节的数相加,加法要分两次进行,先进行低两字节数相加,然后再做高两字节数相加,在高两字节数相加时,要把前两字节相加以后的进位考虑进去,就要用到带进位加法指令。【例1】无符号双字加法运算。02344657H+0F0F0F0FHMOVAX,4652H;(AX)=4652H送低字MOVDX,0234H;(DX)=0234H送高字ADDAX,0F0F0H;(AX)=3742H,CF=1加低字ADCDX,0F0F0H;(DX)=0F3

4、25H,CF=0加高字和进位【例2】无符号双字加法运算若两个四字节的无符号数,分别存放在首址为2000H和3000H的存储单元内,低位在前,高位在后,要求两数相加,结果存放在首址为2000H的单元中,可用如下程序段实现:MOVSI,2000H;第一个数首址送SIMOVAX,[SI];第一个数低16位送AXMOVDI,3000H;第二个数首址送DIADDAX,[DI];两数低16位相加MOV[SI],AX;低16位数相加后的和存入2000H和2001H两存储单元中MOVAX,[SI+2];第一个数高16位送AXADCAX,[DI+2],;两数高16位带进位加MOV[SI+2],AX;

5、两高16位数带进位相加后的和存入2002H和2003H两单元(3)非压缩十进制数的加法校正指令所谓非压缩十进制数,就是把数字09的ASCII码的高四位置0以后形成的数码,如6为00000110,9为00001001。两非压缩十进制数相加,要得到正确结果仍为非压缩十进制数,必须用AAA指令校正,结果存在AX中。AAA指令(ASCIIAjustforAddition)是对两个非压缩的十进制数相加后AL的和进行校正。校正方法如果AL的低4位大于9或(AF)=1,应校正:在AX寄存器内容上加106H,标志位AF和CF置1,并且AL高四位置0。即:(AL)=(AL)+6(AH)=(AH)+

6、1(AF)=(CF)=1且AL高4位清零。否则:(CF)=(AF)=0,AL高4位清零。如在AL和BL中,如各存有一个非压缩BCD数相加,其和存在AL中也是非压缩BCD数,可用如下程序段:MOVAL,09H;非压缩BCD数表示为00001001MOVBL,06H;非压缩BCD数表示为00000110ADDAL,BL;两数相加,结果为00001111,不是非压缩BCD数AAA;必须用AAA指令进行校正,最后结果为(AH)=00000001,(AL)=00000101,(AF)=(CF)=1(4)加法十进制校正指令DAA所谓压缩十进制数,就是把数字09的ASCII码的低四位分别放在一

7、个字节的高低四位后形成的数码,如63为01100011,39为00111001。DAA指令(DecimalAdjustforAddition)是压缩型十进制数的加法校正指令,即AL存两位BCD数,DAA指令的校正和AAA指令类似,它必须考虑两位BCD数。方法是:如果AL的低四位所存值大于9,或标志位AF为1,则把AL加上6,并置标志位AF为1;如果AL的高四位所存值大于9,或标志位CF为1,则把AL加上60H,并置标志位CF为1。MOVAL,37H;压缩十进制数37+

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。