cmp指令何时修改zf标志? [x86 MASM]

时间:2016-05-18 21:04:59

标签: assembly x86 eflags

鉴于" ...当算术或逻辑运算的结果产生零"时,零标志(ZF)被置位,cmp指令如何与ZF交互?

给出以下代码片段,

mov eax, 0
mov edx, 1
cmp eax, edx

cmp如何评估两个操作数以及ZF设置为什么?如果操作数被反转(cmp edx,eax),那么ZF是否设置为与原始语句中相同的值?

如果我要比较两个相同的值,cmp如何评估操作数以及ZF设置为什么?

cmp eax, eax

1 个答案:

答案 0 :(得分:3)

  

cmp如何评估两个操作数?

直接来自the manual

  

通过从第一个操作数中减去第二个操作数来执行比较   然后以与SUB指令相同的方式设置状态标志。

  

如果操作数被反转(cmp edx,eax),那么ZF是否设置为与原始语句中相同的值?

对于ZF,是的。对于其他标志,不一定,因为减法不是可交换的。