给定"…当算术或逻辑运算的结果生成零的结果时,会设置零标志(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,是的。对于其他标志,不一定,因为减法不是交换的。