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

MASM: linking 2 asm files together failed: fatal error L1101: invalid object module?

我正在尝试使用函数调用编译 2 个 .asm 文件并将它们 link 在一起,主程序(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他们在一起:

link m.obj+n.obj m.exe

现在 masm 报错:

M.EXE : fatal error L1011: invalid object module
 pos: 1 Record type: 4D

这是为什么?我是否需要任何特殊的 compile/link 标志才能使其成功? 谢谢。

您应该在两个模块中将代码段声明为public:

代码段PUBLIC'CODE' 和 代码段 PUBLIC 'CODE'

不要忘记提供堆栈段: 堆栈段字堆栈 'STACK' DW 10 DUP 4855h 堆栈结束

我用 MASM v6.1 组装和链接文件:没有错误报告! exe 正确执行。