怎么查找汇编语言对应的机器码?

2024-12-01 07:04:29
推荐回答(5个)
回答1:

  查找汇编语句对应机器码的方法通常是使用反汇编工具,例如IDA Pro,OllyDBG等。

  部分汇编语句(如NOP)和机器码是一一对应的关系,这种语句的编码可以通过查表获得。但像mov byte ptr[esi],90h这类使用操作数或者操作内存的指令一般没有固定编码,所以推荐使用上述反汇编工具。

  方法示例(使用OllyDBG):

     1:首先打开OllyDBG,依次单击 文件->打开 ,弹出以下窗口。选择一个应用程序,单击【打开】。

  2:打开后主窗口显示如下,下图中中间的绿色部分即为右侧汇编指令的机器码。

  注意事项:以上示例为win32平台的应用程序,不同平台的程序也会有不同的指令和反汇编工具,所以以上示例并不通用。建议搜索关键字:平台+反汇编工具(例如 linux 反汇编工具)。

回答2:

你找任何介绍汇编语言的书上都有指令集,上面都会列出每条指令的机器码。

回答3:

其实,编译程序中包含一个指令助记符-机器指令的对照表,就像你查字典能查到读音和字义一样,通过对照表可以很方便地找到对应的机器码。

回答4:

一般直接插手测

此外还有一些工具可以帮助转换

特别需要注意的是,有些指令是和当前的ip有关系的,比如 jump

需要手工计算跳转位置才能得到正确的值

回答5:

这个得找本书才行。而且汇编指令可能对应多个机器码。
如果用dos模拟器,可以用debug自己汇编和反汇编看看。一个是A指令,一个是U指令。