- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[高等教育]第332 算术运算类指令
第三章 80x86的指令系统(二) 二 算术运算类指令 1. 加法指令 2. 减法指令 3. 乘法指令 4. 除法指令 5. 十进制调整指令 1. 加法运算指令p36 (1)加指令ADD (add) (2) 带进位加指令ADC (add with carry) (3) 非压缩十进制数的加法校正指令AAA (4) 加法十进制校正指令DAA (5) 加1指令 INC (increment) (6) 交换并相加 XADD (exchange and add) 1.加法 (1)加法指令的一般格式 ADD dst, src 功能: dst?dst+src 该指令对源操作数和目的操作数的内容执行一个字节或字的加法,并把结果放回原来存放目的操作数的地方。 源操作数可以是立即数、寄存器或存储单元。目的操作数可以是寄存器或存储单元。 例如: ADD AL, 30H ;AL内容加立即数30H,结果存回到AL中 ADD AX, SI ;AX和SI两寄存器内容相加,结果存回到AX中 ADD [BX+DI], AX ;BX+DI和BX+DI+1两存储单元内容和AX内容相加,结果存回到上述两存储单元中 (2)带进位加法指令的一般格式 ??????????? ADC dst, src 功能:dst?dst+src+CF 该指令和ADD指令类似,只是在两个操作数相加时,要把标志寄存器中进位标志CF 的当前值加上去,结果放回原来存放目的操作数的地方。 该指令主要用于多字节运算中。例如,见下页: 例如,有两个四字节的数相加, 加法要分两次进行, 先进行低两字节数相加, 然后再做高两字节数相加, 在高两字节数相加时,要把前两字节相加以后的进位考虑进去,就要用到带进位加法指令。 【例1】无符号双字加法运算。 0234 4657H+ 0F0F 0F0FH MOV AX,4652H ;(AX)=4652H 送低字 MOV DX,0234H ;(DX)=0234H 送高字 ADD AX,0F0F0H ;(AX)=3742H,CF=1 加低字 ADC DX,0F0F0H;(DX)=0F325H,CF=0 加高字和进位 【例2】无符号双字加法运算 若两个四字节的无符号数,分别存放在首址为2000H和3000H的存储单元内,低位在前,高位在后,要求两数相加,结果存放在首址为2000H的单元中,可用如下程序段实现: MOV SI, 2000H ;第一个数首址送SI MOV AX, [SI] ;第一个数低16位送AX MOV DI, 3000H ;第二个数首址送DI ADD AX, [DI] ;两数低16位相加 MOV [SI], AX ;低16位数相加后的和存入2000H和2001H两存储单元中 MOV AX, [SI+2] ;第一个数高16位送AX ADC AX, [DI+2], ;两数高16位带进位加 MOV [SI+2], AX ;两高16位数带进位相加后的和存入2002H和2003H两单元 (3)非压缩十进制数的加法校正指令 所谓非压缩十进制数,就是把数字0 ?9的ASCII码的高四位置0以后形成的数码,如69 两非压缩十进制数相加,要得到正确结果仍为非压缩十进制数,必须用AAA指令校正,结果存在AX中。 AAA指令(ASCII Ajust for Addition)是对两个非压缩的十进制数相加后AL的和进行校正。 校正方法 如果AL的低4位大于9或(AF)=1,应校正:在AX寄存器内容上加106H,标志位AF和CF置1,并且AL高四位置0。即: (AL)=(AL)+6 (AH)=(AH)+1 (AF)=(CF)=1 且AL高4位清零。 否则:(CF)=(AF)=0,AL高4位清零。 如在AL和BL中,如各存有一个非压缩BCD数相加,其和存在AL中也是非压缩BCD数,可用如下程序段: MOV AL,09H ;非压缩BCD数表示为0000 1001 MOV BL,06H ;非压缩BCD数表示为0000 0110 ADD AL, BL ;两数相加 ,结果为0000 1111,不是非压缩BCD数 AAA ;必须用
文档评论(0)