资源描述:
《8086指令系统之算术运算类指令》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、8086指令系统之算术运算类指令2007-04-1707:511 加法指令1.1 加法指令ADD ADDreg,imm/reg/mem;reg←reg+imm/reg/mem ADDmem,imm/reg;mem←mem+imm/reg例2.17a:加法运算 moval,0fbh;al=0fbh addal,07h;al=02h movwordptr[200h],4652h;[200h]=4652h movbx,1feh;bx
2、=1feh addal,bl;al=00h addwordptr[bx+2],0f0f0h;[200h]=3742h ADD指令按照状态标志的定义相应设置这些标志的0或1状态。例如在07+FBH→02H运算后:标志为OF=0、SF=0、ZF=0、AF=1、PF=0、CF=1;用调试程序单步执行后,上述标志状态依次为NV、PL、NZ、AC、PO、CY。 同样进行4652h+f0f0h→3742H运算后,标志为OF=0、SF=0、ZF=0、AF=0、PF=
3、1、CF=1;调试程序依次显示为NV、PL、NZ、NA、PE、CY。注意,PF仅反映低8位中“1”的个数,AF只反映D3对D4位是否有进位。1.2 带进位加法指令ADC ADCreg,imm/reg/mem;reg←reg+imm/reg/mem+CF ADCmem,imm/reg;mem←mem+imm/reg+CF ADC指令除完成ADD加法运算外,还要加进位CF,其用法及对状态标志的影响也与ADD指令一样。ADC指令主要用于与ADD指令相结合实现多精度数相加。例2.17b:无符号双字
4、加法运算 movax,4652h;ax=4652h addax,0f0f0h;ax=3742h,CF=1 movdx,0234h;dx=0234h adcdx,0f0f0h;dx=f325h,CF=0上述程序段完成DX.AX=02344652H+F0F0F0F0H=F3253742H。1.3 增量指令INCINCreg/mem;reg/mem←reg/mem+1 INC指令对操作数加1(增量)。 incbx
5、 incbyteptr[bx] 设计加1指令和后面介绍的减1指令的目的,主要是用于对计数器和地址指针的调整,所以它们不影响进位CF标志,对其他状态标志位的影响与ADD、ADC指令一样。2 减法指令2.1 减法指令SUB SUBreg,imm/reg/mem;reg←reg-imm/reg/mem SUBmem,imm/reg;mem←mem-imm/reg例2.18a:减法运算 moval,0fbh;al=0fbh
6、 subal,07h;al=0f4h,CF=0 movwordptr[200h],4652h;[200h]=4652h movbx,1feh;bx=1feh subal,bl;al=0f6h,CF=1 subwordptr[bx+2],0f0f0h;[200h]=5562h,CF=12.2 带借位减法指令SBB SBBreg,imm/reg/mem;reg←reg-imm/reg/mem-CF
7、SBBmem,imm/reg;mem←mem-imm/reg-CF 该指令使目的操作数减去源操作数,还要减去借(进)位CF,结果送到目的操作数。SBB指令主要用于与SUB指令相结合实现多精度数相减。例2.18b:无符号双字减法运算 movax,4652h;ax=4652h subax,0f0f0h;ax=5562h,OF=0、SF=0、ZF=0、AF=0、PF=0、CF=1 movdx,0234h;dx=0234h
8、 sbbdx,0f0f0h;dx=1143h,OF=0、SF=0、ZF=0、AF=0、PF=0、CF=1 上述程序段完成DX.AX=02344652H-F0F0F0F0H=11435562H。2.3 减量指令DEC