使用 TASM+TLINK 创建具有非零组织的 32 位二进制文件

问题描述 投票:0回答:1

我正在使用 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。

assembly x86 tasm
1个回答
0
投票

我设法使其与 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
© www.soinside.com 2019 - 2024. All rights reserved.