MASM 是否组装多个源文件并将它们链接在一起?

Does MASM assembling multiple source files and linking them together?

我试图查看 asm 语言是否支持基于函数的链接,例如 "C" 语言。例如。我有 "m.asm":

assume cs:code
code segment
start:
  mov ax,20h
  call s
  mov ah,4ch
  int 21h
code ends
end start

其中"s"是源代码中不存在的符号,然后我有n.asm文件来定义符号(实际上是标签)

code segment
s:
  mov bx,4h
  div bx
code ends

实际上m.asm编译失败,告诉我"s"是一个未定义的符号。我怎样才能解决这个问题并满足我的要求?

您需要在 n.asm 中使用 public 指令将函数 s 声明为对希望访问它的其他模块可见(例如通过 call),并且您需要使用 m.asm.

中的 extern 指令将 s 声明为外部引用

这适用于少量声明,但如果您的模块增长到任何相当大的尺寸,您可能需要使用 include 头文件来管理它。