在没有警告消息的情况下从另一个程序集文件调用过程

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
...

否则,您可以声明类型为 NEARFAR 的符号(用它代替 PROC),只需确保正确定义函数(例如 print PROC FAR).

有关类型的完整列表,请参阅 TASM manual 的第 5 章。