assembly MASM:将2个asm文件链接在一起失败:致命错误L1101:无效对象模块?

cld4siwp  于 2023-08-06  发布在  其他
关注(0)|答案(2)|浏览(109)

我试图使用函数调用编译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


为什么会这样?我是否需要任何特殊的编译/链接标志才能使其成功?- 谢谢-谢谢

qybjjes1

qybjjes11#

您应该在两个模块中将代码段声明为public:
代码段公共代码和代码段公共代码
不要忘记提供一个堆栈段:堆栈段字堆栈'堆栈' DW 10 DUP 4855 h堆栈结束
我用MASM v6.1组装并链接了这些文件:没有错误报告!exe正确执行。

rqcrx0a6

rqcrx0a62#

同样的错误对我来说,我解决了这个问题,只是安装Masm32而不是Masm,下载并安装它,然后设置程序路径在变量环境。下载链接:http://masm32.com/download.htm

相关问题