在没有警告消息的情况下从另一个程序集文件调用过程
Calling procedures from another assembly file without warning message
我有 2 个文件:
m2:
.model small
.stack 100h
.data
global print ;######4######
.code
main:
MOV AX, @data
MOV DS, AX
print proc ;expects information from DX
MOV AH,9
INT 21h
ENDP
MOV AH, 4ch
INT 21h
END main
m1:
.model small
.stack 100h
.data
str1 DB 'hello $'
.code
EXTRN print:far
main:
MOV AX, @data
MOV DS, AX
MOV DX, OFFSET str1
CALL print
MOV AH, 4ch
INT 21h
END main
我试图弄清楚如何使用 this 解释来 link 这两个文件,但它是针对 NASM 的,而我在使用 TASM 时遇到了问题。
我 link 编辑了这两个文件,但是在组装 m2 时我收到警告:
global type doesn't match symbol : PRINT.
我试图删除第 4 行,但后来我无法 link m1, m2 并收到警告:
undefined symbol PRINT in module M1.ASM
我还尝试从 m1.asm 文件中删除关键字 far
... 也没有用。
我的问题是如何去除警告并能够link这两个文件?
只要给符号一个一致的打字。
最简单的方法是使用 PROC
让汇编程序选择正确的类型:
m2.asm
...
GLOBAL print: PROC
...
m1.asm
...
EXTRN print: PROC
...
否则,您可以声明类型为 NEAR
或 FAR
的符号(用它代替 PROC
),只需确保正确定义函数(例如 print PROC FAR
).
有关类型的完整列表,请参阅 TASM manual 的第 5 章。
我有 2 个文件:
m2:
.model small
.stack 100h
.data
global print ;######4######
.code
main:
MOV AX, @data
MOV DS, AX
print proc ;expects information from DX
MOV AH,9
INT 21h
ENDP
MOV AH, 4ch
INT 21h
END main
m1:
.model small
.stack 100h
.data
str1 DB 'hello $'
.code
EXTRN print:far
main:
MOV AX, @data
MOV DS, AX
MOV DX, OFFSET str1
CALL print
MOV AH, 4ch
INT 21h
END main
我试图弄清楚如何使用 this 解释来 link 这两个文件,但它是针对 NASM 的,而我在使用 TASM 时遇到了问题。
我 link 编辑了这两个文件,但是在组装 m2 时我收到警告:
global type doesn't match symbol : PRINT.
我试图删除第 4 行,但后来我无法 link m1, m2 并收到警告:
undefined symbol PRINT in module M1.ASM
我还尝试从 m1.asm 文件中删除关键字 far
... 也没有用。
我的问题是如何去除警告并能够link这两个文件?
只要给符号一个一致的打字。
最简单的方法是使用 PROC
让汇编程序选择正确的类型:
m2.asm
...
GLOBAL print: PROC
...
m1.asm
...
EXTRN print: PROC
...
否则,您可以声明类型为 NEAR
或 FAR
的符号(用它代替 PROC
),只需确保正确定义函数(例如 print PROC FAR
).
有关类型的完整列表,请参阅 TASM manual 的第 5 章。