3算术运算指令.pptVIP

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3.3 算术运算指令 1.加法指令 2.减法指令 3.乘法指令 4.除法指令 1.加法指令 ADD指令对6个状态标志均产生影响 例:已知(BX)=D75FH 指令 ADD BX,8046H 执行后,状态标志各是多少? (2) ADC:带进位位的加法指令 ADC指令在形式上和功能上与ADD类似,只是相加时还要包括进位标志CF的内容,例如: ADC AL,68H ;AL←(AL)+68H+(CF) ADC AX,CX ;AX←(AX)+(CX)+(CF) ADC BX,[DI] ;BX←(BX)+[DI+1][DI] +(CF) ADC指令用于多字节加法运算中 (3) 加1指令INC(单操作数指令) (4)压缩的BCD码加法调整指令DAA (5)非压缩的BCD码加法调整指令AAA 2. 减法指令 (2) 考虑借位的减法指令SBB (3) 减1指令DEC (4) 比较指令CMP 根据标志位来判断比较的结果 1)根据ZF判断两个数是否相等。 若ZF=1,则两数相等。 2)若两个数不相等,则分两种情况考虑: ①比较的是两个无符号数 若CF=0,则dst>src; 若CF=1,则dst<src。 ②比较的是两个有符号数 若OF⊕SF=0,则dst>src; 若OF⊕SF=1,则dst<src。 (5)求补指令 NEG (6)压缩BCD码减法调整指令DAS 小结:算术运算指令 比较指令 CMP 加/减1指令 INC,DEC 不带进位的加/减法指令 ADD,SUB 带进位的加/减法指令 ADC,SBB *3、乘法指令 *4、除法指令 (3)非压缩BCD码除法调整指令AAD * 加法、减法运算操作数 通用寄存器 通用寄存器 立即数 存储器 ± 立即数 通用寄存器 ± 存储器 目的操作数 源操作数 (1) ADD:不带进位的加法指令 格式:ADD mem/reg,data ADD mem/reg1, reg2/mem 如: ① ADD AX,3A5FH ;AX + 3A5FH → AX ② ADD AL,[BX] ;将EA=BX的内存单元的 ;内容+AL→AL ③ ADD [BX],AX ;将EA=BX的内存单元的 ;内容+AX →该内存单元 结果:C=1, Z=0, P=1, A=1, O=1, S=0 源和目的操作数不能同时为存储器操作数 立即数不能作为目的操作数 D75FH = 1101 0111 0101 1111 8046H = 1000 0000 0100 0110 1 1 11 11 0101 0111 1010 0101 例1:设AL = 79H,BH = 0B3H,求执行指令 ADD AL, BH后,AL = ?,BH = ?, 各个标志位的值= ? 。 解: 79H = 0111 1001 B = 121 +) B3H = 1011 0011 B = -77 1 0010 1100 B = 44 所以,AL = 0010 1100B = 2CH, BH = 0B3H SF = 0, ZF = 0, AF = 0 CF = 1, OF = 0, PF = 0 例2:求两个双字数据的和。 数据1在DX(高字)和AX(低字)内,; 数据2在BX(高字)和CX(低字)内,为6789ABCDH。 AX = 5 6 7 8 H +) CX = ABCD H AX = 0 2 4 5 H CF = 1 解:因为8088的指令只能进行字/字节运算,所以对于双字运算必须分两步进行。 第一步,低字和低字相加:ADD AX,CX 第二步,高字和高字相加,同时要考虑低字之和的进位: ADC DX,BX DX = 1 2 3 4 H BX = 6 7 8 9 H +) CF = 1 DX = 7 9 B E H CF= 0 所以双字之和是79BE 0245H 例:有两个4字节的无符号数相加: 2C56F8AC+309E47BE=? 设被加数、加数分别存放在BUFFER1及BUFFER2开始的两个存储区内,结果放回BUFFER1存储区。 而两个内存单元不能直接相加减,为此需要借助CPU内部寄

文档评论(0)

00625 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档