当寄存器值为0时,为什么不设置零标志?

时间:2014-03-15 19:25:58

标签: assembly

我正在尝试使用条件跳转指令。

Label:
    mov eax, 0xffffffff
    not eax
    jz Label ; jump only if zero

然而,jz没有跳转到Label。这是因为$ eflags显示ZF未设置。我不明白为什么当EAX是0x00000000时没有设置ZF?

谢谢!

3 个答案:

答案 0 :(得分:3)

在任何x86编程手册中查找NOT指令(例如this PDF from Intel - 它会告诉你没有设置标志。所以简单的答案是它没有设置ZF,因为它不应该。

如果你想问更深层次的问题,为什么他们这样设计,对不起,我不知道。

答案 1 :(得分:2)

并非所有汇编指令都会对标志产生影响。not不会影响任何标志。

答案 2 :(得分:0)

而不是尝试使用xor eax,0ffffffffh。