为什么NEG指令会干扰进位标志?

时间:2018-10-25 21:54:54

标签: x86 x86-64 intel negation

I see this information on the site,

  

在否定(NEG)期间,除非操作数为零,否则将设置进位标志,在这种情况下,将其清除。

但是,这并不能帮助我说明进位标志。为什么会这样,NEG如何触发一个标志着应该表示结转的标志。

In this answer they quote the manual,

  

如果源操作数为0,则CF标志设置为0;否则,将CF标志设置为0。否则设置为1。

在我的脑海中,我看到这一点的方式解释了我是按位求反,然后加一个。为什么设置进位标志?有没有什么程序可以帮助我在不了解上述规则的情况下完成此任务。

1 个答案:

答案 0 :(得分:2)

在减法上的进位标志表示借位。如果您对x求反,则(实际上)从0中减去x,这需要借位,除非x为0。

因此,除非您减去0,否则设置进位标志是有意义的。

3位2秒恭维

 cf
[0]000  value = 0
[0]011  SUB 3
   ---
   Requires borrow.

 cf
[1]111  0 after carry (cf=1)
   011  SUB 3
------
[1]100  
    +1  2cp
   101

您可以将心理视为逐位否定。