MASM:将 2 个 asm 文件链接在一起失败:致命错误 L1101:无效的对象模块?
MASM: linking 2 asm files together failed: fatal error L1101: invalid object module?
我正在尝试使用函数调用编译 2 个 .asm 文件并将它们 link 在一起,主程序(m.asm)是:
assume cs: code
extrn s: near
code segment
start:
mov ax,20h
call s
mov ah,4ch
int 21h
code ends
end start
函数"s"定义在n.asm:
assume cs: code
public s
code segment
s:
mov bx,4h
div bx
ret
code ends
end
所以在dosbox中我用masm来编译它们:
masm m.asm
masm n.asm
没问题,那我试试link他们在一起:
link m.obj+n.obj m.exe
现在 masm 报错:
M.EXE : fatal error L1011: invalid object module
pos: 1 Record type: 4D
这是为什么?我是否需要任何特殊的 compile/link 标志才能使其成功?
谢谢。
您应该在两个模块中将代码段声明为public:
代码段PUBLIC'CODE'
和
代码段 PUBLIC 'CODE'
不要忘记提供堆栈段:
堆栈段字堆栈 'STACK'
DW 10 DUP 4855h
堆栈结束
我用 MASM v6.1 组装和链接文件:没有错误报告!
exe 正确执行。
我正在尝试使用函数调用编译 2 个 .asm 文件并将它们 link 在一起,主程序(m.asm)是:
assume cs: code
extrn s: near
code segment
start:
mov ax,20h
call s
mov ah,4ch
int 21h
code ends
end start
函数"s"定义在n.asm:
assume cs: code
public s
code segment
s:
mov bx,4h
div bx
ret
code ends
end
所以在dosbox中我用masm来编译它们:
masm m.asm
masm n.asm
没问题,那我试试link他们在一起:
link m.obj+n.obj m.exe
现在 masm 报错:
M.EXE : fatal error L1011: invalid object module
pos: 1 Record type: 4D
这是为什么?我是否需要任何特殊的 compile/link 标志才能使其成功? 谢谢。
您应该在两个模块中将代码段声明为public:
代码段PUBLIC'CODE' 和 代码段 PUBLIC 'CODE'
不要忘记提供堆栈段: 堆栈段字堆栈 'STACK' DW 10 DUP 4855h 堆栈结束
我用 MASM v6.1 组装和链接文件:没有错误报告! exe 正确执行。