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



给定"…当算术或逻辑运算的结果生成零的结果时,会设置零标志(ZF)",cmp指令如何与ZF交互?

给定以下代码片段,

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

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

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

cmp eax, eax

cmp如何计算这两个操作数?

直接从手册:

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


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

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

最新更新