从另一个程序集文件调用过程而不显示警告消息

时间:2018-05-31 17:08:47

标签: assembly x86 tasm

我有2个文件:

平方米:

.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解释来链接这两个文件但是它适用于NASM,而我使用的是TASM而且我遇到了问题。
我链接了两个文件,但在组装 m2 时我收到了警告:

  

全局类型与符号不匹配:PRINT。

我尝试删除第4行,但后来我无法链接 m1 m2 并收到警告:

  

模块M1.ASM

中的未定义符号PRINT

我还尝试从 m1.asm 文件中删除关键字far ...也没用。

我的问题是如何删除警告并能够链接这两个文件?

1 个答案:

答案 0 :(得分:4)

只需给符号一致输入即可 最简单的方法是使用PROC让汇编程序选择正确的类型:

<强> m2.asm

...
GLOBAL print: PROC
...

<强> m1.asm

...
EXTRN print: PROC
...

否则,您可以声明类型为NEARFAR的符号(使用它代替PROC),只需确保正确定义该函数(例如{{1 }})。

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