我想用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以任何方式解释我想要的代码?
谢谢
答案 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文件,那你就错了。