格式:NEG OPR ;B/W
执行的操作:(OPR)←(OPR)求补
这条指令的执行影响全部标志位。
下面就求补操作时对CF和OF两个标志位的影响做一个分析。求补操作即是把操作数按位求反后末位加1,即FFFFH-OPR+1=0-OPR。也就是说,对一个操作数求补,相当于用0减去此操作数。参加求补运算的操作数当然是有符号数。对于CF而言,只有对0求补时,CF=0,其余情况都使CF=1(有借位)。0减去负数应该是正数,但当操作数的值是80H(-128)或8000H(-32768)时,求补后其值保持不变,仍为负数,固产生溢出,OF=1。其余情况都使OF=0。
求反指令NOT的操作是对操作数按位求反,即FFFFH-OPR。所以假定要对AX寄存器中的操作数进行求补,那么可以有如下几种方法:
方法1:NEG AX
方法2:NOT AX
INC AX
方法3:MOV BX,0
XCHG AX,BX
SUB AX,BX
注意:由于求补运算的结果应在AX中,所以方法3中要使用交换指令将AX和BX互换