1

我想打开一个仅数据输入文件,即这样的:

 .data
 .org 0
 .equ foo, 42
 .asciz "foo"
label:
 .long 0xffffffff
 .long 0x12345678
 .byte foo
 .long label
 .long bar
 .equ bar, 'x'

放入对应字节序列 'f','o','o', 0, 0xff, 0xff, 0xff, 0xff, 0x78, 0x56, 0x34, 0x12, 42, 4, 0, 0, 0, 'x ', 0, 0, 0。

当我用 GNU as ( as -o foo.o -s foo.S) 组装它时,我得到一个 400+ 字节的 ELF 文件。我怎样才能让 GNU(或 NASM 或任何其他汇编器)给我简单的二进制表示?我研究了 GNU 作为选项,但无济于事。我可以修改输入格式,如果这使答案更容易(即使用更多和不同的伪操作)。

任何提示都非常感谢!

问候,延斯

4

2 回答 2

1

在 MASM 中,您将组装MASM成一个 .obj 文件,LINK一个 .exe 文件,然后使用EXE2BIN实用程序对结果 exe 文件进行后处理。

在 TASM 中,您将组装成一个 .obj 文件,然后TLINK/t/x参数链接。

于 2011-03-10T16:33:56.373 回答
1

我挖了一下,找到了一个使用 nasm 的解决方案,从http://www.nasm.us/ 获取

原始数据的等效指令如下所示:

     org 0
foo  equ 42
     db "foo", 0
label:
     dd 0xffffffff
     dd 0x12345678 
     db foo
     dd label
     dd bar
bar  equ 'x'

用 组装这个nasm -f bin -o file.bin file.S。瞧!.中的普通二进制文件file.bin。猜猜这让我成为一个自学者:-)

于 2011-03-10T18:38:29.833 回答