Win32程序集条件跳转

时间:2016-10-28 05:13:26

标签: assembly x86 opcode

关于以下操作码参考:http://ref.x86asm.net/coder32.html

我试图更多地了解条件跳跃。您将在上面引用的链接中看到&#34;如果为零/等于(ZF = 0)&#34;则跳转短路的操作码。是 74 。因此,如果我们(在调试器中)二进制插入字节 74 04 并且ZF标志设置为0,我们将看到 4 字节的短前向跳转:< / p>

0207FF9F        74 04        JE SHORT 0207FFA5

没有问题。

稍后在同一个参考文献中,有一个类似的条件短跳转使用操作码 85 引用,但是如果你用条件跳转的类似字节长度弹出该代码,你会得到以下内容:

0207FFA5        850441        TEST DWORD PTR DS:[ECX+EAX*2],EAX

Attempted conditional jump

我在这里显然不理解某事,是否有人能够解释?基于标志值的条件短跳是否仅限于操作 70 7F

1 个答案:

答案 0 :(得分:1)

您找到的第二个0F位于2字节操作码表中,其中每个条目都以0F ..为前缀。

“近”(rel32)version of JZ/JE is 0F 85。 (哎呀,HTML摘要会截断编码列表,只会删除一些 Android.Net.Uri result = data == null || resultCode != Result.Ok ? null : data.Data ; var a = new Android.Net.Uri[] { result }; rel32版本。或者实际上已经破坏了非表格格式。请参阅英特尔的PDF原文。

那些操作码表不是指令集参考手册。不过,如果您只是需要快速参考,它们会很方便。如果您感到困惑,请查看完整手册中的说明(标签wiki中的链接。