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
头文件来管理它。
我试图查看 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
头文件来管理它。