反汇编命令 8E C0
我需要反汇编命令 8E C0,你能帮我吗?
我已经做到了:
第一个字节 8E = 10001110b 它是 mov sr,reg/mem
但我不知道如何处理第二个字节 11000000
I need to disassemble command 8E C0, can you help me?
I already made this:
First byte 8E = 10001110b it's mov sr,reg/mem
But I don't know what to do with the second byte 11000000
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以查阅英特尔文档来自己解决这个问题,或者您可以使用更容易的反汇编程序。答案是:
我使用 yasm,并执行了以下操作:
如果您想手动执行此操作,则字节可以解释如下。
8E
对应Intel指令集参考中的这条指令:/r< /code> 表示接下来的字节是“Mod R/M”字节。指令的描述表明我们应该将 Reg/Opcode 部分解释为段寄存器,该寄存器将成为目标,Mod 和 R/M< /em> 部分将指示来源。将位分开,Mod 是前两位 (
11b
),Reg 是接下来的三位 (000b
) )和R/M底部三位(000b
)。查找相应的表,
11
的Mod表示寄存器操作数,R/M表示EAX
(或AX
(16 位模式)),当引用段寄存器时,Reg 为000
为ES
。You can wade through the intel docs to work it out yourself, or you can use a disassembler which is far easier. The answer is:
I use yasm, and did the following:
If you want to do this by hand, the bytes can by interpreted as follows.
8E
corresponds to this instruction in the Intel instruction set reference:The
/r
indicates that the following byte is a "Mod R/M" byte. The description of the instruction indicates that we should interpret the Reg/Opcode part as a segment register which will be the destination and the the Mod and R/M parts will indicate the source. Seperating out the bits, Mod is the top two bits (11b
), Reg is the next three (000b
) and R/M the bottom three bits (000b
).Looking up in the appropriate table, Mod of
11
indicates a register operand, with R/M denotingEAX
(orAX
in 16-bit mode) and000
for Reg when referring to a segment register isES
.