neg 指令

neg指令,实现的是求补码。求一个数的补码等于对这个数取反的结果加1,最后得到的结果就是这个数的补码。

但要注意的是正数的补码是其本身,但neg指令不管是否是正数还是负数,只按照规则进行操作,如对这个数进行取反,然后加1,最后的结果放入操作数里。

实际neg指令执行的算术运算是:操作数 = 0 -(操作数的二进制数),并且使得CF(进位标志位)=1(但是对0求补码除外)这是汇编的规定。

但对-128、-32768、-2147483648等数求补时(负数在计算机中以补码的形式进行存放),OF=1(溢出标志位),其余情况OF=0,这也是汇编的规定。

举例:

mov eax, 1
neg eax
//neg指令后,eax 值为 0xFFFFFFFF,同时EFL标识寄存器中CF=1

mov eax, -1
neg eax
//neg指令后,eax 值为 0x00000001,同时EFL标识寄存器中CF=1

mov eax, 0
neg eax
//neg指令后,eax 值为 0x00000000,同时EFL标识寄存器中CF=0

mov eax, 0x10
neg eax
neg 指令_第1张图片
neg 指令_第2张图片

你可能感兴趣的:(汇编指令)