第9章汇编语言与高级语言的连接 本章主要教学内容 1、了解汇编程序过程 2、掌握多个模块组合时的连接情况 3、掌握多个模块之间的变量传送问题 4、掌握汇编语言程序与高级语言程序的连接方法 教学目的:使学生掌握汇编语言与高级语言的连结 教学重点:汇编语言程序与高级语言程序的连接方法 教学难点:多个模块之间的变量传送问题
第9章 汇编语言与高级语言的连接 本章主要教学内容 1、了解汇编程序过程 2、掌握多个模块组合时的连接情况 3、掌握多个模块之间的变量传送问题 4、掌握汇编语言程序与高级语言程序的连接方法 教学目的:使学生掌握汇编语言与高级语言的连结 教学重点:汇编语言程序与高级语言程序的连接方法 教学难点:多个模块之间的变量传送问题
91连接程序及连接对程序设计的要求 911连接程序的主要功能 (1)找到要连接的所有目标模块。 (2)对所有要连接的目标模块中的所有段分配存 储单元,即确定所有段地址值。 (3)确定所有汇编程序所不能确定的偏移地址值 (包括浮动地址及外部符号所对应的地址) (4)构成装入模块,并把它装入存储器
9.1 连接程序及连接对程序设计的要求 9.1.1 连接程序的主要功能 (1)找到要连接的所有目标模块。 (2)对所有要连接的目标模块中的所有段分配存 储单元,即确定所有段地址值。 (3)确定所有汇编程序所不能确定的偏移地址值 (包括浮动地址及外部符号所对应的地址)。 (4)构成装入模块,并把它装入存储器
912连接对程序设计的要求 多个模块组合时的连接情况 几种组合方式: (1) PUBLIO:可以把不同模块中的同名段在装入模块 中连接而形成一个段,它们共用一个段地址 (2) COMMON:把不同模块中的同名段重叠而形成 个段。 (3) STACK:把不同模块中的同名段组合而形成一个段。 (4) MEMORY:使该段放在装入模块的最高地区 (5)NONE:默认方式。表示该段与其他模块中的段不 发生任何组合关系
9.1.2 连接对程序设计的要求 1.多个模块组合时的连接情况 几种组合方式 : (1)PUBLIC:可以把不同模块中的同名段在装入模块 中连接而形成一个段,它们共用一个段地址。 (2)COMMON:把不同模块中的同名段重叠而形成一 个段。 (3)STACK:把不同模块中的同名段组合而形成一个段。 (4)MEMORY:使该段放在装入模块的最高地区。 (5)NONE:默认方式。表示该段与其他模块中的段不 发生任何组合关系
SEGI (PUBLIC) lOKB 模块1 SEG2 ( COMMON) 20KB 10KB SEGI SEG3 (STACK 20KB lOKB 连接以后 20KB SEG2 模块2 SEGI ( COMMON) 20KB 组合情况 lOKB SEG3 SEG2(COMMON) 1 5KB 30KB G4 SEG4 30KB 模块3 SEG3(STACK lOKB 连接时对不同模块同名段的组合处理
SEG1(PUBLIC) 10KB SEG2(COMMON) 20KB 模块 1 SEG3(STACK) 10KB SEG1(COMMON) 20KB SEG2(COMMON) 15KB 模块 2 SEG4 30KB SEG3(STACK) 10KB 模块 3 连接以后 组合情况 10KB 20KB SEG1 20KB SEG2 10KB 10KB SEG3 30KB SEG4 连接时对不同模块同名段的组合处理
2.多个模块之间的变量传送问题 (1)利用外部符号 【例91】 (2)多个模块之间的变量传送方法 【例92】 【例93】 详见教材 【例94】
2.多个模块之间的变量传送问题 (1)利用外部符号 【例9.1】 (2)多个模块之间的变量传送方法 【例9.2】 【例9.3】 【例9.4】 详见教材
92汇编语言程序与高级语言程序 的连接 连接中要解决以下三个问题: (1)存储器分配问题 (2)两种语言之间的控制传送问题 (3)变量传送问题
9.2 汇编语言程序与高级语言程序 的连接 连接中要解决以下三个问题: (1)存储器分配问题 (2)两种语言之间的控制传送问题 (3)变量传送问题
92.1 PASCAL语言程序与汇编语言程序的 连接 PASCAL与汇编语言连接的开发过程 首先将 PASCAL语言程序和汇编语言程序编 写成为独立的程序模块,并且分别用它们的编译 程序将程序模块单独地编译成目标模块,即生成 2OBJ文件,然后用LINK程序将 PASCAL的目标 模块和汇编语言的目标模块以及 PASCAL的库文 件连接起来,生成一个可执行文件(EXE文件)
9.2.1 PASCAL语言程序与汇编语言程序的 连接 一.PASCAL与汇编语言连接的开发过程 首先将PASCAL语言程序和汇编语言程序编 写成为独立的程序模块,并且分别用它们的编译 程序将程序模块单独地编译成目标模块,即生成 *.OBJ文件,然后用LINK程序将PASCAL的目标 模块和汇编语言的目标模块以及PASCAL的库文 件连接起来,生成—个可执行文件(*.EXE文件)
采用外部方式与汇编语言程序相连接 将汇编语言程序单独编写、汇编、连接生 成EXE文件后,再转换成COM或BN文件,供 PASCAL程序以外部过程或函数的形式调用。 这时,需要在 PASCAL程序和汇编语言程序中 分别按语言约定进行说明。 1、 PASCAL程序中的说明 FUNCTION函数名(变量名:变量类型;…;变量名:变量 类型);函数类型; EXTERNAL PROCEDURE过程名(变量名:变量类型; 变量名:变 量类型); EXTERNAL
二.采用外部方式与汇编语言程序相连接 将汇编语言程序单独编写、汇编、连接生 成EXE文件后,再转换成COM或BIN文件,供 PASCAL程序以外部过程或函数的形式调用。 这时,需要在PASCAL程序和汇编语言程序中 分别按语言约定进行说明。 1、 PASCAL程序中的说明 FUNCTION 函数名(变量名:变量类型;……;变量名:变量 类型);函数类型;EXTERNAL; PROCEDURE 过程名(变量名:变量类型;……;变量名:变 量类型);EXTERNAL;
2、建立汇编过程 建立一个可被 PASCAL程序调用的汇编过程是进行 混合编程和程序调用的另一个主要任务 (1)汇编过程的建立。 (2)汇编过程的进入。 (3)分配局部变量(可选择)。 (4)保护现场(即保护相关寄存器的值)。 (5)参数访问 (6)结果和值的返回(可选择) (7)退出汇编语言过程
2、建立汇编过程 建立一个可被PASCAL程序调用的汇编过程是进行 混合编程和程序调用的另一个主要任务。 (1) 汇编过程的建立。 (2) 汇编过程的进入。 (3) 分配局部变量(可选择)。 (4) 保护现场(即保护相关寄存器的值)。 (5) 参数访问。 (6) 结果和值的返回(可选择)。 (7) 退出汇编语言过程
3、 PASCAL调用汇编语言过程的步骤 (1)编写并汇编一个汇编语言过程,如EP4ASM连接 并形成一个可执行文件EP4EXE。 (2)由于 PASCAL程序所调用的外部过程是以二进制 文件形式(如BIN或COM)包含在外部说明中 的,故需要把一个汇编语言过程的EXE文件转换 为BIN或COM文件。这个转换可以用实用程序 EXE2BIN来实现。 (3)编写 PASCAL程序,进行外部说明。 (4)在集成环境下编译后执行 PASCAL程序。 【例95】
3、PASCAL调用汇编语言过程的步骤 (1)编写并汇编一个汇编语言过程,如EP4.ASM连接 并形成一个可执行文件EP4.EXE。 (2)由于PASCAL程序所调用的外部过程是以二进制 文件形式(如.BIN或.COM)包含在外部说明中 的,故需要把一个汇编语言过程的.EXE文件转换 为.BIN或.COM文件。这个转换可以用实用程序 EXE2BIN来实现。 (3)编写PASCAL程序,进行外部说明。 (4)在集成环境下编译后执行PASCAL程序。 【例9.5】