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

问题描述 投票:1回答:2

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

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

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

assembly reverse-engineering x86-16 machine-code opcode
2个回答
3
投票

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

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

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

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.