如果我错了请纠正我。
这是我的理解JNZ
and CMP
.
JNZ
- 跳跃将会发生,如果Z
标志不为零 (1)
CMP
- 如果两个值相等,则Z
标志已设置 (1),否则未设置 (0)
这是我正在看的 Flash 教程。它正在教授一个简单的 CrackMe 的解决方案。
正如你所看到的,之前的指令比较AL
with 47h
。他们是平等的,这设定了Z
旗帜。 (您可以在右侧的寄存器窗口中看到它)
下一条指令是JNZ
。我的理解是,如果Z
标志已设置。这Z
标志已设置,但跳转没有发生!
Why?
JNZ 是“如果不为零则跳转 (ZF = 0)”的缩写,并且NOT“如果设置了 ZF,则跳转”。
如果更容易记住,请考虑 JNZ 和 JNE(如果不相等则跳转)是等效的。因此,当你做的时候cmp al, 47
和内容AL
等于 47,ZF 已设置,因此不应进行跳跃(如果不等于 - JNE)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)