我这里有一个程序 需要把两个文件连接起来才行 一个是sun 另外一个soundf
请问用link怎么弄 不会用。。
soundf是被sun调用的一个函数 请问怎么弄啊
------解决方案--------------------------------------------------------
楼上的方法应该可行,再推荐另一种方法:
soundf.asm
public soundf ; 声明为公共过程,以便外部模块可以调用该过程
soundf proc near/far
……
……
soundf endp
sun.asm
extrn soundf:near/far ;告诉编译器,该过程在外部模块
sun proc
……
call soundf
……
sun endp
ml sun.asm
ml soundf.asm
link sum.obj+soundf.obj
楼主试试,应该行的,有的link程序可以省略掉“.obj”这个扩展名,形如下面的样子:
link sum+soundf
------解决方案--------------------------------------------------------
问题已经解决:
步骤1:
ML S.ASM
假设子过程如下,在S.ASM中
PUBLIC S
CODES SEGMENT
ASSUME CS:CODES
S PROC FAR
MOV DL, '$ '
MOV AH,02H
INT 21H
RET
S ENDP
CODES ENDS
END
步骤2:ML M.ASM
假设主文件是M.ASM,内容如下:
EXTRN S:FAR
DATAS SEGMENT
;此处输入数据段代码
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
CALL S
;此处输入代码据段代码
MOV AH,4CH
INT 21H
CODES ENDS
END START
步骤3:
LINK M.OBJ S.OBJ
接下来提示:
Run File [M.exe]: TT 回车
List File [nul.map]:回车
Libraries [.lib]:回车
Definitions File [nul.def]:回车
LINK : warning L4021: no stack segment
TT是输入的可执行文件名,如果直接输入回车,生成的可执行文件会是m.exe
最后一行提示没有堆栈,别理他。
步骤4:
TT回车
运行结果:
$
好了,问题完满解决了
注意:我使用的是MASM6.11的ML和LINK,TASM的语法有些不同,在此不做介绍了。