MASM是否汇集了多个源文件并将它们链接在一起?

时间:2016-07-06 07:44:25

标签: assembly x86 masm

我试图看看asm语言支持功能是否基于#34; 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"是一个未定义的符号。如何解决此问题并满足我的要求?

1 个答案:

答案 0 :(得分:4)

你需要声明函数s对于希望使用call指令在n.asm中访问它的其他模块(例如通过public)可见,你需要使用s中的extern指令将m.asm声明为外部参考。

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