我正在使用 TASM 寻找与以下汇编程序等效的内容,即使用非零 org.json 创建一个 32 位二进制文件。以下是它与 NASM 的配合方式:
; $ nasm -O0 -f bin -o id.bin id.nasm
bits 32
cpu 386
org 432100h
mov eax, foo
push eax
foo:
; $ ndisasm -b 32 id.bin
; 00000000 B806214300 mov eax,0x432106
; 00000005 50 push eax
TASM 和 TLINK 的组合是否可以做同样的事情? .asm 文件是什么样子的?编译命令行是什么?
请注意:
输出文件必须为 6 个字节长(请参阅上面的十六进制转储),没有任何标头。
真是TASM+TLINK。在这个问题中,我不是在寻找替代方案。 (NASM 显然可以做到,见上文。)
org
必须是432100h。使用 org 0
和 mov eax, foo+432100h
是不行的。
一些背景:我有一个中等复杂的 x86 32 位汇编程序,具有二进制文件输出,我很好奇是否可以将其移植到 TASM。
我设法使其与 TASM+WLINK(而不是 TASM+TLINK)一起使用,使用 TASM 4.1。
这是我的 id.asm 文件:
.386
.model flat
.stack 100h ; Dummy, to pacify TASM.
mov eax, offset foo
push eax
foo:
end foo ; Dummy reference to foo, to pacify TASM.
这是我的编译方法:
tasm /t id.asm
wlink format raw bin option offset=0x432100 option quiet name idw.bin file id.obj
ndisasm -b 32 idw.bin
输出:
00000000 B806214300 mov eax,0x432106
00000005 50 push eax