请原谅我,如果这可能是一个愚蠢的问题,但是,我在一个汇编类中,主要是使用仿真CPU教授汇编代码的概念。我们甚至没有写过英特尔计划,所以我正在努力调整。在我们的模拟CPU中,我们能够生成一个符号表文件,该文件给出了与指令等效的字节:
我能用英特尔x86指令做这样的事吗?
答案 0 :(得分:1)
尝试IDA.它可以选择显示操作码的二进制值。
编辑:嗯..这是一个反汇编程序。尝试打开二进制文件,并将要显示的操作码字节数(在Options / General /中)设置为非零值。如果您正在寻找能够实时显示您所使用指令的操作码的IDE,那么由于缺乏“市场”,我认为您不会找到它。你能解释一下你为什么需要吗?你想知道他们的长度,还是想学习它们?长度有简单的模式,所以通过分解许多二进制文件,你会发现它。如果它是你想要的操作码......好吧,它们有很多,几乎没有规则,几乎没有任何用处。
我明白了..然后你必须生成列表文件。你的汇编程序应该有一个选项。 (对于NASM,它是-l listfile
)。只需在.asm文件中放入任何指令,并为其生成列表。它应包含每条指令的二进制编码。
首先,获取Intel Instruction Set Refference,或者更好的是,此链接:http://siyobik.info/index.php?module=x86。在那里你会发现大多数操作码有几种编码。在您的特定情况下,操作码的第1位指定方向,并且由于两个操作数都是寄存器,您可以切换方向并交换寄存器代码,结果将是相同的。通常,您在大多数寄存器中都可以自由地注册算术运算。要检查这一点,请尝试使用IDA反编译此源文件:
db 02h, E0h
db 00h, C4h
答案 1 :(得分:1)
fasm.dll附带了一个演示程序,它有一个编辑器和十六进制查看器: