Win32程序集条件跳转

问题描述 投票:1回答:1

关于以下操作码参考: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?

assembly x86 opcode
1个回答
1
投票

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

“近”(rel32)version of JZ/JE is 0F 85。 (哎呀,HTML摘要会截断编码列表,只会访问一些0F .. rel32版本。或者实际上已经打破了非表格格式。请参阅英特尔的PDF原件。

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

© www.soinside.com 2019 - 2024. All rights reserved.