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



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

相关内容

最新更新