Assembly 英特尔8086,一些小东西

Assembly 英特尔8086,一些小东西,assembly,encoding,x86-16,Assembly,Encoding,X86 16,MOV AL,4的8086指令的编码是否为c604 另外,我将如何编码MOV-AX,DS:5678h和SUB-BX[Di+6] 谢谢您的帮助。MOV AL,4已编码为B004 MOV-AX,DS:5678h是操作码和操作数的无效组合。这将无法编译 子BX,[DI+6]编码为2B5D06 对于那些感兴趣的人,这是如何解码编译的16位汇编程序 。。。这可能是一个很好的维基 首先:这是在MacOSX上完成的,但是任何Linux发行版都可以使用所描述的工具 在x86(8086)汇编语言以及许多其他汇编

MOV AL,4
的8086指令的编码是否为
c604

另外,我将如何编码
MOV-AX,DS:5678h
SUB-BX[Di+6]


谢谢您的帮助。

MOV AL,4
已编码为
B004

MOV-AX,DS:5678h
是操作码和操作数的无效组合。这将无法编译

子BX,[DI+6]
编码为
2B5D06


对于那些感兴趣的人,这是如何解码编译的16位汇编程序

。。。这可能是一个很好的维基

首先:这是在MacOSX上完成的,但是任何Linux发行版都可以使用所描述的工具

在x86(8086)汇编语言以及许多其他汇编语言中,汇编程序将(勉强)人类可读的助记符编译成字节码。每个助记符都转换为特定的字节码。例如:

XOR-AX,AX
编码为
31C0

要解码机器语言,您需要您最喜欢的文本编辑器NASM(Netwide汇编程序)和十六进制编辑器

步骤1:在文本编辑器中输入要解码的助记符,首先使用[BITS 16]指令。保存

步骤2:使用命令
nasm-f bin-o编译

步骤3:使用十六进制编辑器打开输出文件

步骤4:显示的字节将是解码的助记符


下面是如何将字节码反编译为NASM语法助记符。这与上述步骤相反

NASM随工具NDISAM或Netwide反汇编程序一起提供。此程序将字节码反汇编回原始指令

您将需要NASM工具集,如果需要,还需要一个十六进制编辑器

步骤1:获取字节码文件。这应该是汇编语言编译的。C/C++代码或任何其他机器语言文件可能在实际机器代码之前包含头

如果需要,可以使用十六进制编辑器检查/编辑字节码文件

步骤2:运行以下命令:
ndisam-b16
。终端右侧显示的行是字节码的助记符

如果字节码无效,有时
ndisam
会说某些字节是
db
助记符-这意味着
定义字节
。换句话说,这是一个填充字节,
ndisam
找不到有效的助记符


另外,请记住,当使用
ndisasm
和任何其他反编译程序或反汇编程序时,反编译程序/反汇编程序将不会检索注释或空格。

这是16位汇编,对吗?好的,我正在处理它。将添加图片。多谢各位,您知道有什么快速的方法可以实现相反的操作吗?以B004为例,找出它是什么?mov ax,ds:5678h根据特定的汇编语法可能被编码为A1 78 56(在FASM语法中为mov ax,[ds:5678h]),完成了。用户77708,上面解释了相反的情况。祝你的项目好运!