【发布时间】:2016-10-28 05:13:25
【问题描述】:
关于以下操作码参考:http://ref.x86asm.net/coder32.html
我试图更多地了解条件跳转。您将在上面引用的链接中看到“如果零/等于 (ZF=0) 时跳转短”的操作码是 74。因此,如果我们(在调试器中)二进制插入字节 74 04 并将 ZF 标志设置为 0,我们将看到 4 字节的短向前跳转:
0207FF9F 74 04 JE SHORT 0207FFA5
没有问题。
稍后在同一个参考中,使用操作码 85 引用了一个类似的条件短跳转,但是如果您将该代码以类似的字节长度弹出以进行条件跳转,您会得到以下内容:
0207FFA5 850441 TEST DWORD PTR DS:[ECX+EAX*2],EAX
我显然不明白这里的一些东西,有人能解释一下吗?基于标志值的条件短跳转是否仅限于操作码 70 到 7F?
【问题讨论】:
-
@mazegen 在上面提到的参考文献中打错了:Jump if zero/equal 的条件实际上是 ZF=1 而不是 ZF= 0,反之亦然。