反汇编问题:结果错误

时间:2014-04-21 19:29:03

标签: nasm binaryfiles disassembly

我想用nasm反汇编一个非常简单的行二进制代码(.com文件),但输出不是我所期望的。主要代码是:

mov ax,4
push ax
mov ax,7
push 9

但是nasm的输出是:(我也尝试使用IDA Pro,它是一样的)

00000000 B80400    mov ax,0x4
00000003 B80750    mov ax,5007
00000006 006809    add [bx+si+0x9],ch
00000009 0000      add [bx+si],al

你可以看到二进制代码是正确的,只是解释是错误的(我认为是因为我正在使用的另一个程序引起的最后3个额外的零字节。或者其他的东西!)

如何在二进制代码中省略最后的零?或者nasm以任何方式解释我想要的代码?

谢谢

1 个答案:

答案 0 :(得分:0)

B80750确实是mov ax,0x5007。没错。

无论如何,给定的代码片段应该组装成这样的东西:

00000000  B80400            mov ax,0x4
00000003  50                push ax
00000004  B80700            mov ax,0x7
00000007  6A09              push byte +0x9

如果你自己组装了.com文件,那你就错了。