C7E*_*C7E 7 x86 assembly cpu-architecture eflags
NOT
在保存二进制的寄存器上将11111111
产生00000000
,但 ZF 仍将具有其旧值,因此1
即使输出值全为零,它也可能不是。
XOR reg, -1
会做同样的事情,但会根据结果设置标志。
为什么按位 NOT 不影响 ZF 位?希望有人能解释一下为什么,或者本来就是这样设计的。
sj9*_*126 10
其实这个问题可以让8086的设计者Steve Morse自己来回答。我希望他能原谅我引用他的书《8086/8088 Primer》,该书已在他的网站上提供。以下摘自第98页:
影响标志的布尔指令列表中缺少一条布尔指令 NOT。NOT 不影响标志。这是定义处理器时的疏忽(我犯了错误!)的结果。