欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    80X86汇编语言程序设计第二章⑤.80868088指令系统(二)加减运算指令.pdf

    • 资源ID:76254837       资源大小:32.51KB        全文页数:5页
    • 资源格式: PDF        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    80X86汇编语言程序设计第二章⑤.80868088指令系统(二)加减运算指令.pdf

    80X86 汇编语言程序设计第二章 8086/8088 寻址方式和指令系统(二)加减运算指令1.加法指令ADD格式:ADD OPRD1,OPRD2执行的操作:(OPRD1)(OPRD1)+(OPRD2)例如:MOV AX,7896H;(AX)=7896H即(AH)=78H(AL)=96H;各标志位保持不变ADD AL,AH;AL=AL+AH=96H+78H(=10EH)=0EH前面的 1给了进位标志CF。即(AH)=78H(AX)=780EHCF=1PF=0AF=0ZF=0SF=0OF=0 例如:ADD DX,0F0F0H执行前(DX)=4652H执行后(DX)=4652H+F0F0H(=13742H)=3742H 前面的 1给了进位标志CF。ZF=0 SF=0 CF=1 OF=0这里 4的二进制码是0100,F 是1111,一个正数一个负数相加肯定OF 是0。例如:ADD AX,4321执行前(AX)=62A0H执行后(AX)=62A0+4321=A5C1H 这里要注意,A 的二进制数是1010,最高有效位为1,所以 SF 为1。两个正数相加,结果为负的就溢出;两个负数相加,结果为正的就溢出。SF=1 ZF=0 CF=0 OF=1这里 6的二进制码是0110,而 4的二进制码是0100,两个正数相加,结果A 为1010 为负,所以OF 为1。从上面例子可看出:加法指令影响标志位。OF 位根据操作数的符号及其变化情况来设置:若两个操作数的符号相同而结果的符号与之相反时 OF=1,否则 OF=0。CF 位可以用来表示无符号数的溢出。由于无符号数的最高有效位只有数值意义而无符号意义,所以从该位产生的进位应该是结果的实际进位值,但在有限数的范围内就说明了结果。2.带进位加指令ADC(Add with Carry)格式:ADC OPRD1,OPRD2执行的操作:(OPRD1)(OPRD1)+(OPRD2)+(CF)例如:下列指令序列执行两个双精度(32位)的加法。设目的操作数放在DX 和 AX 寄存器中,其中 DX 存放高位字,源操作数存放在BX、CX 中,其中BX 存放高位字。(双精度的数高位和高位相加,低位和低位相加,首先加低位。)如指令执行前:(DX)=0002H(AX)=0F365H(BX)=0005H(CX)=0E024H指令序列为:ADD AX,CXADC DX,BX执行第一条指令后:(AX)=AX+CX=F365+E024)=1D389)=D389HSF=1 ZF=0 CF=1 OF=0这里 F 的二进制是 1111,E 的二进制是 1110,得出的 D 是1101。所以 OF 为0。(8以上全是负的,8以下全是正的)执行第二条指令后:(DX)=DX+BX+CF=0002+0005+0001=0008HSF=0 ZF=0 CF=0 OF=0则该指令序列执行完后:(DX)=0008H(AX)=D389H从上面的例子可以看出:为实现双精度加法,必须用两条指令分别完成低位字和高位字的加法,而且在高位字相加时,应该使用 ADC 指令以便把前一条ADD 指令作低位字加法所产生的进位值加入高位字之内。另外,带符号的双精度数的溢出,应该根据ADC 指令的 OF 位来判断,而作低位加法用的ADD 指令的溢出是无意义的。此指令影响标志位。3.加1指令 INC(INCrement)格式:INC OPRD这条指令完成对操作数OPRD 加1,然后把结果送回OPRD,即:(OPRD)(OPRD)+1操作数 OPRD 可以是通用寄存器,也可以是存储单元。这条指令执行的结果影响标志ZF、SF、OF、PF 和 AF,但它不影响CF。该指令主要用于调整地址指针和计数器。例如:写出把首地址为BLOCK的字数组的第6个字送到DX 寄存器的指令。要求使用以下几种寻址方式:(1)寄存器间接寻址MOV BX,OFFSET BLOCK;首先把BLOCK 里的偏移地址送给BX,这里也可以用 LEA BX,BLOCKADD BX,000AH MOV DS,BX(2)寄存器相对寻址LEA BX,BLOCK;也可以 MOV BX,OFFSET BLOCKMOV DX,BX000AH4.减法指令SUB(SUBtraction)格式:SUB OPRD1,OPRD2执行的操作:(OPRD1)(OPRD1)-(OPRD2)例如:SUB SI+14H,0136H指令执行前(DS)=3000H,(SI)=0040H,(30054H)=4336物理地址=DS+SI+14H=30000+0040+0014=30054H SUB(30054H)=4336-0136=4200H指令执行后(30054H)=4200HSF=0 ZF=0 CF=0 OF=0例如:SUB DH,BP+4指令执行前(DH)=41H,(SS)=0000H,(BP)=00E4H,(000E8H)=5AHSS:BP=00000+00E4+4=000E8=5AHSIB DH-BP=41H-5AH=E7H指令执行后(DH)=0E7HSF=1 ZF=0 CF=1 OF=0此指令影响标志位CF 位说明无符号数相减的溢出,同时它又是被减数的最高有效位向高位的借位值。OF 位则说明带符号数的溢出。减法的 OF 位的设置方法为:若两个数的符号相反,而结果的符号与减数相同则OF=1。说明结果是错误的。5.带借位减指令SBB(SuBtract with Borrow)格式:SBB OPRD1,OPRD2执行的操作:(OPRD1)(OPRD1)-(OPRD2)-CF例如:SBB AL,DLSBB DX,AX该指令主要用于多字节数相减的场合。6.减1指令 DEC(DECrement)格式:DEC OPRD执行的操作:(OPRD)(OPRD)-1例如:DEC VARB;VARB 是字节变量操作数 OPRD 可以是通用寄存器,也可以是存储单元。在相减时,把操作数作为一个无符号数对待。这条指令执行的结果影响标志ZF、SF、OF、PF 和 AF,但不影响CF。7.取补指令NEG(NEGate)格式:NEG OPRD执行的操作:(OPRD)0-(OPRD)这条指令对操作数取补,就是用零减去操作数OPRD,再把结果送回OPRD。(各位取反末尾加1)操作数可以是通用寄存器,也可以是存储单元。例如:NEG ALNEG VARWSI;有效地址就是VARW 的位移加SI 的值如在字节操作时对-128 取补,或在字操作时对-32768 取补,则操作数不变,但OF 被置 1。其它均为 0。此指令的执行结果影响CF、ZF、SF、OF、AF 和 PF,操作数为 0时,求补运算的结果使CF=0,其它情况则均为1。8.比较指令CMP(CoMPare)格式:CMP OPRD1,OPRD2这条指令完成操作数OPRD1 减去操作数OPRD2,运算结果不送到OPRD1。但影响标志CF、ZF、SF、OF、AF 和 PF。例如:CMP SI,DICMP CL,5CMP DX,BP-4比较指令主要用于比较两个数的关系,是否相等,谁大谁小。执行了比较指令后,可根据ZF 是否置位,判断两者是否相等;如果两者是无符号数,则可根据CF 判断大小;如果两者是有符号数,则要根据SF 和 OF 判断大小。例如:设 X,Y,Z 均为双精度数,它们分别存放在地址为X,X+2,Y,Y+2,Z,Z+2 的存储单元中,存放时高位字在高地址中,低位字在低地址中。下列指令序列实现WX+Y+24-Z并用 W 和 W+2单元存放运算结果。MOV AX,XMOV DX,X+2ADD AX,YADC DX,Y+2ADD AX,24ADC DX,0SUB AX,ZSBB DX,Z+2MOV W,AXMOV W+2,DX例如:设当前数据段寄存器的内容为1B00H,在数据段的偏移地址2000H单元内,含有一个内容为 0FF10H和8000H的指针,它们是一个16位变量的便宜地址和段地址,试写出把该变量装入 AX 的指令序列。MOV BX,2000HMOV ES,2002HMOV AX,ES:BX例如:写出执行以下计算的指令序列,其中X,W,Z 均为存放 16位带符号数单元的地址。ZW+(Z-X)一法:MOV AX,ZMOV BX,XSUB AX,BXMOV BX,WADD AX,BXMOV Z,AX二法:MOV AX,ZSUB AX,XADD AX,WMOV Z,AX遇到双精度数用AX 存放低字,用DX 存放高字。先进行低字的加减法,再进行高字的加减法,因为在高位还要算入带进位的加减法。例如:写出对存放在DX 和 AX 中的双字长数求补的指令序列答案:NEG DXNEG AXSBB DX,0如果是双字数进行求补,首先对高位(DX)进行求补,然后再对低位(AX)求补、求补:用 0减或者各位取反末尾加一。一.指出下列指令的错误:MOV AH,BX AH 是8位寄存器,BX 是 16位寄存器;(寄存器寻址)MOV AX,SIDI SI 时源变址寄存器,DI 是目的变址寄存器,两个都是变址寄存器,应该有一个是基址;(基址加变址寻址)CMP 15,BX 目的操作数不能是立即数;PUSH BL 压栈都是以字为单位;POP CS 出栈不能是CS,CS 不能做目的操作数;MOV BX,SI 转移指令俩不能都是存储单元;MOV CS,AX 代码段 CS 不能做目的操作数;CMP OP1,OP2(OP1,OP2 是已定义的字节变量)不能同时比较两个字节单元;CMP AX,OP1(OP1 是已定义的字节变量)AX 是字而 OP1 是字节,类型不匹配。(1)分辨是单操作数还是双操作数;(2)如果是双操作数,那么它是根据什么寻址方式;(3)双操作数的目的操作数不能是立即数;(4)两个操作数中必须有一个是寄存器(除了立即寻以外);(5)双操作数中,代码段CS 不能做目的操作数;(6)最后检查两个操作数的类型是否匹配;()如果是单操作数,栈操作都是以字为单位(16位寄存器和 16位地址);()单操作数中,代码段CS 不能做目的操作数;二.完成对字单元BUF 的内容加 1运算,下面错误的指令是?A.MOV BX,BUF;直接寻址,把BUF 的内容送给BXINC BXMOV BUF,BXB.MOV BX,OFFSET BUF;把 BUF 的偏移地址给了BXINC WORD PTRBX;将 BX 中地址字单元的内容加1C.MOV BX,BUF;直接寻址,把BUF 的内容送给BXINC WORD PTRBX;将 BX 中地址字单元的内容加1D.MOV BX,0;将 BX 清零INC WORD PTR BUFBXBUF 是一个符号地址。

    注意事项

    本文(80X86汇编语言程序设计第二章⑤.80868088指令系统(二)加减运算指令.pdf)为本站会员(索****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

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

    收起
    展开