鉴于" ...当算术或逻辑运算的结果产生零"时,零标志(ZF)被置位,cmp指令如何与ZF交互?
给出以下代码片段,
mov eax, 0
mov edx, 1
cmp eax, edx
cmp如何评估两个操作数以及ZF设置为什么?如果操作数被反转(cmp edx,eax),那么ZF是否设置为与原始语句中相同的值?
如果我要比较两个相同的值,cmp如何评估操作数以及ZF设置为什么?
cmp eax, eax
答案 0 :(得分:3)
cmp如何评估两个操作数?
直接来自the manual:
通过从第一个操作数中减去第二个操作数来执行比较 然后以与SUB指令相同的方式设置状态标志。
如果操作数被反转(cmp edx,eax),那么ZF是否设置为与原始语句中相同的值?
对于ZF,是的。对于其他标志,不一定,因为减法不是可交换的。