我需要反汇编8E C0命令,您能帮我吗?

我已经做了这个:

第一个字节8E = 10001110b是mov sr,reg / mem

但我不知道该如何处理第二个字节11000000

最佳答案

您可以浏览intel文档以自行解决,也可以使用反汇编程序轻松得多。答案是:

mov ES, EAX

我使用yasm,并执行以下操作:
# assemble the two bytes:
echo 'lbl: db 0x8e, 0xc0' | yasm -f elf - -o tmp.o

# disassemble the output:
objdump -d -M intel tmp.o

如果要手动执行此操作,则可以按以下方式解释字节。
8E对应于英特尔指令集参考中的以下指令:


/r指示随后的字节是“Mod R / M”字节。该指令的说明表明,我们应该将Reg / Opcode部分解释为将作为目的地的段寄存器,而Mod和R / M部分将指示源。分开这些位,Mod是高两位(11b),Reg是后三位(000b),R / M是后三位(000b)。

在适当的表中查找,11的Mod表示寄存器操作数,其中R / M表示EAX(或16位模式下的AX),而Reg的000表示段寄存器是ES

关于assembly - 拆卸命令8E C0,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6248257/

10-11 15:25