算术运算指令

算术运算指令的执行大多对状态标志位会产生影响

加法运算指令

算术运算指令
前两条会影响全部的6个状态位
最后一条不影响CF,影响其它5个状态标志位

  • 加法指令对操作数的要求和MOV指令一样

(1)ADD指令

算术运算指令
例:
算术运算指令
上面两条指令就是把78H和99H相加,结果送给AL
执行指令后6个标志位状态的情况:
算术运算指令
上图中我们发现最高位有进位,所以使用ADC相加

(2)ADC指令

算术运算指令
例:
算术运算指令
算术运算指令

(3)INC指令

算术运算指令

减法运算指令

算术运算指令

(1)SUB指令

算术运算指令

(1)SBB指令

算术运算指令

(1)DEC指令

算术运算指令
例:
算术运算指令
上例中的2:当立即数的最高这位是A~F中符号的数字的时候,前面要加0,是给编译器看的,否则编译器就不认识了
上例完成的功能:实际上它什么也没干,就是典型的延时(定时)的功能

(4)NEG指令

算术运算指令
也叫求补指令
0减去一个数,肯定会向高位借位,所以大多数情况下CF=1,只有一种情况下CF=0,就是操作数也为0的时候,0-0不会发生借位
算术运算指令

(5)CMP指令

算术运算指令
这条指令不返回结果,就是用来影响标志位
对标志位的影响和SUB一样
算术运算指令
算术运算指令
算术运算指令
例:
算术运算指令
上例程序的功能:
算术运算指令

乘法运算指令

算术运算指令
算术运算指令
算术运算指令

(1)MUL

算术运算指令
例:
算术运算指令
PTR是说明字长的,前面有BYTE,说明操作数是字节字长的

(2)IMUL

算术运算指令

除法运算指令

算术运算指令
算术运算指令

算术运算指令小结

算术运算指令
例:
算术运算指令
指令的结果:
算术运算指令
把最后一条换成带符号数的乘法指令:
算术运算指令
执行结果:
算术运算指令
再做一下修改:
算术运算指令
算术运算指令