我试图使用函数调用编译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
为什么?我是否需要任何特殊的编译/链接标志才能使其成功? 感谢。
答案 0 :(得分:2)
您应该在两个模块中都将代码段声明为公共:
代码段公共“代码” 和 代码段公共“代码”
不要忘记提供一个堆栈段: 堆栈段字堆栈“堆栈” DW 10 DUP 4855h 堆栈结束
我用 MASM v6.1 组装并链接了文件:没有报告错误! exe 正确执行。