我试图使用函数调用编译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
型
为什么会这样?我是否需要任何特殊的编译/链接标志才能使其成功?- 谢谢-谢谢
2条答案
按热度按时间qybjjes11#
您应该在两个模块中将代码段声明为public:
代码段公共代码和代码段公共代码
不要忘记提供一个堆栈段:堆栈段字堆栈'堆栈' DW 10 DUP 4855 h堆栈结束
我用MASM v6.1组装并链接了这些文件:没有错误报告!exe正确执行。
rqcrx0a62#
同样的错误对我来说,我解决了这个问题,只是安装Masm32而不是Masm,下载并安装它,然后设置程序路径在变量环境。下载链接:http://masm32.com/download.htm