SUB:不带借位的减法指令。
【指令格式】SUB OP1,OP2
【指令功能】(OP1)←(OP1)-(OP2),将OP1-OP2的值,保存在OP1中,如:
SUB [EAX],1 以EAX寄存器为内存地址,将该地址的值减1,类似C/C++中的 i--;
【指令介绍】
目的操作数减去源操作数,结果放在目的操作数中。源操作数原有内容不变,并根据运算结果置标志位SF,ZF,AF,PF,CF,OF
SUB指令可以进行字节或字的减法运算,源操作数和目的操作数的约定与ADD指令相同。
操作数的类型可以根据程序员的要求约定为带符号数或者无符号数。当无符号数的较小数减去较大数时,因不够减而产生借位,此时进位标志CF置1.当带符号数的较小数减去较大数时,将会得到负的结果,则符号位SF置1.带符号数相减,如果溢出,则OF置1.
【例】
-
SUB BL,AL
设(BL)=23H,(AL)=78H,(BL)=23H-78H=ABH(1010101)
根据运算结果,各标志位为:CF=1,ZF=0,SF=1,OF=0,PF=0,AF=1
2. SUB SI,SI
寄存器自身相减,则结果为零,此时:
OF=0,SF=0,ZF=1,PF=1,CF=0