求补(neg)是一个cpu指令, 它得到操作数的相反数。如:
d:\MASM>debug
-a
1472:0100 mov ax,1
1472:0103 neg ax ;对ax求补,得到相反数-1
1472:0105 mov bx,ffff ;bx:-1
1472:0108 neg bx ;对bx求补,得到相反数1
1472:010A
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1472 ES=1472 SS=1472 CS=1472 IP=0100 NV UP EI PL NZ NA PO NC
1472:0100 B80100 MOV AX,0001
-t
AX=0001 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1472 ES=1472 SS=1472 CS=1472 IP=0103 NV UP EI PL NZ NA PO NC
1472:0103 F7D8 NEG AX
-t
AX=FFFF BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1472 ES=1472 SS=1472 CS=1472 IP=0105 NV UP EI NG NZ AC PE CY
1472:0105 BBFFFF MOV BX,FFFF
-t
AX=FFFF BX=FFFF CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1472 ES=1472 SS=1472 CS=1472 IP=0108 NV UP EI NG NZ AC PE CY
1472:0108 F7DB NEG BX
-t
;-------------------------------------------------------------------------
有符号数中的负数在计算机内以补码的形式存在,正数就是本身。例如字值-3的补码就是:
0000000000000011 ;正数3
1,先取反
1111111111111100 ;逐位取反
2,再加1
1111111111111100
1
-----------------
1111111111111101 ;那么-3在计算机内的补码就是FFFFFDh |