将OP代码声明为字和字节序列

时间:2013-12-23 16:29:26

标签: assembly reverse-engineering x86-16 machine-code opcode

我在这里得到了几笔代码。我需要知道AX的最终价值是什么。 在代码段中:

MOV AX, 0FF05H
DB 80H
DW E411H
DB 30H,C4H
XCHG AH,AL

命令dwdb在做什么(我知道声明字节和字,但可能在这里不一样)。

2 个答案:

答案 0 :(得分:3)

编写汇编程序时,汇编程序将指令转换为字节序列。因此,当您知道指令的操作码时,您也可以使用该序列声明字节。

有时,如果汇编程序不知道指令助记符,或者你想使用无效的操作码,你知道这些操作码可以在你的目标上运行但是汇编程序不支持,那么它会很有用。

或者您可以使用它来强制指令的特定编码,因为汇编程序可能会选择不同的编码。一些汇编程序具有请求特定编码的语法,例如NASM add eax, strict dword 1将使用imm32而不是imm8。

但是,如果没有手动编码,您就无法在add r/m32, imm32add eax, imm32之间做出选择(没有ModRM字节的特殊短格式编码)

答案 1 :(得分:0)

是的,他们的工作方式相同。声明字节和字值。据推测,处理器会点击并运行它们,因为它位于代码流中。您需要查看处理器手册并将这些值映射到正确的操作码,以了解它正在做什么。