我试图使用函数调用编译 2 个 .asm 文件并将它们链接在一起,主程序 (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 m.obj+n.obj m.exe
现在 masm 给出错误:
M.EXE : fatal error L1011: invalid object module
pos: 1 Record type: 4D
为什么?我是否需要任何特殊的编译/链接标志才能使其成功?谢谢。
您应该在两个模块中将代码段声明为公共代码段:
代码段公共"代码"和代码段公共"代码"
不要忘记提供堆栈段:堆栈段字堆栈"堆栈"DW 10 DUP 4855h堆栈端
我用MASM v6.1组装并链接了文件:没有报告错误!exe 正确执行。
对我来说同样的错误,我通过安装 Masm32 而不是 Masm解决了这个问题,下载并安装它,然后在变量环境中设置程序路径。下载链接:http://masm32.com/download.htm