8086汇编程序模块的连接

标签:
8086汇编模块连接校园 |
分类: 汇编 |
8086汇编程序中,如何将几个模块连接在一起呢?
如:将几个.asm文件连接在一起编译形成一个.obj文件。
主要有三种方法:
1、在编译的时候连接。
CSEG
START :
INCLUDE
INCLUDE
CSEG
END
SUB1
MOV
SUB1
文件C.asm
SUB2
SUB2
操作过程如下:
http://s16/middle/867764f7gaf51db7bad4f&690
这里有几点要说明:
(1)
(2)
(3)子程序的类型必须定义为NEAR. 因为INCLUDE伪指令在对现行的源程序文件汇编时,是把另外的源程序文件 加入 到现行源程序中的INCLUDE处的。拿上面的例子来说,文件B.asm的源程序和文件C.asm的源程序在汇编时会被插入到A.asm文件的INCLUDE处,三个源代码在同一个代码段CSEG中,属于段内调用。
http://s2/middle/867764f7gaf51f1ea8081&690
2、在LINK的时候连接。
这种方法主要使用LINK命令的连接格式,把事先独立编辑、编译、调试好的程序模块(.obj文件)再用LINK连接生成.exe文件时连接在一起,即把多个.obj文件连接成一个完整的.exe文件。
LINK的主要格式:LINK
EXTRN
CSEG
START :
CSEG
END
文件B.asm
PUBLIC
CSEG
ASSUME CS:CSEG
SUB1
SUB1
CSEG
END
文件C.asm
PUBLIC
CSEG
SUB2
SUB2
CSEG ENDS
END
注:注意加粗的语句和斜体语句(和第一种方法比较着看)
操作过程如下:
http://s10/middle/867764f7g77ee98cc3ed9&690
http://s2/middle/867764f7g77ee98f25e01&690
http://s3/middle/867764f7gaf51fae542d2&690
http://s16/middle/867764f7g77ee9931a5ff&690
要注意以下几点:
(1)各源程序要设置必需 的段地址,至少要设置代码段(其他段根据需要安排)。
(2)要组织在同一个物理段内的各个段的名字要相同,如果段名不同,要用GROUP伪指令说明。
(3)模块中要使用其他模块的标号时,用EXTRN语句说明,本模块中存在可以被其他模块引用的标号要用PUBLIC语句说明。EXTRN 和PUBLIC 语句放在所有段的前面。
3、子程序库法。
这种方法和方法2本质上是一样的,所以程序源代码和方法2中的源代码一样。
操作过程如下: