首页 > 解决方案 > 为什么 NEG 指令会干扰进位标志?

问题描述

我在网站上看到了这些信息,

在取反(NEG)期间,除非操作数为零,否则会设置进位标志,在这种情况下它会被清除。

但是,它并不能帮助我推理进位标志。为什么它会以这种方式运行以及 NEG 如何触发一个应该代表结转的标志。

在这个答案中,他们引用了手册,

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

在我的脑海中,我看到这一点的方式解释了我正在做一个按位否定,并添加一个。为什么设置进位标志?是否有任何过程可以帮助我在不理解上述规则的情况下理解这一点。

标签: x86x86-64intelnegation

解决方案


减法时的进位标志表示借位。如果你取反x,你(实际上)x从 0 中减去,这需要借位,除非x是 0。

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

3 位 2-s 恭维

 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

您可以在心理上将其视为按位否定。


推荐阅读