- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章多模块程序设计
第5 章 多模块程序设计
5.1 汇编语言程序的多模块连接
5.2 结构与记录
5.3 汇编语言程序与高级语言程序的连接
返回主目录
第5章多模块程序设计
第5 章 多模块程序设计
在第 4 章所介绍的程序设计中,源程序所涉及的标识符
(变量、标号、段名、过程名等)都在本程序中定义,它与本程
序之外的标识符不发生任何关系,这种程序设计称为单模块
程序设计。本章将介绍多模块程序设计方法, 也称为模块化
程序设计方法。所谓模块,从功能上讲它可以是整个大程序
的较为独立的一个部分,从源程序结构形式上讲它是由END
结束的一个完整程序。因而一个源模块可以单独汇编,形成
自己的目标模块。最后,由连接程序将各个目标模块连接成
一个可执行程序。采用模块化程序设计有下面一些优点
第5章多模块程序设计
(1) 一个复杂程序可以分成若干个模块, 可由不同人员分
头完成;
(2) 每个模块的任务明确,便于理解;
(3) 单个模块易于编写和调试;
(4) 便于程序的维护和修改;
(5) 可以直接利用已有的模块。
采用模块化程序设计时,必须合理分割模块,严格定义各
模块的输入、输出参数及各模块间的通讯方式。
第5章多模块程序设计
在单模块程序设计时,模块内所用到的段、变量及标号
等各种标识符都必须在本模块内给予定义,否则汇编时将会
给出错误信息。多模块程序设计时,由于各个模块都是整个
程序的一个部分,因此,各模块之间不仅会有数据上的传
递, 而且会出现各模块间的变量、标号等标识符的交叉引用。
如何实现这种交叉引用,如何实现各模块间各段的连接是汇
编语言多模块程序设计的重要问题,也是本章要叙述的主要
内容。此外,多程序模块的连接不仅适用于汇编语言的程序
模块,也适用于汇编语言程序模块与高级语言的程序模块的
连接。因此,本章还将介绍汇编语言与两种高级语言(BASIC
和TURBO - C)之间连接的基本方法。
第5章多模块程序设计
5.1 汇编语言程序的多模块连接
5.1.1 多模块之间段的连接
1. SEGMENT语句提供的连接信息
段定义的完整语句为:
段名 SEGMENT [定位类型][组合类型][‘类别’]
…
段名 ENDS
在第4 章中已指出,段定义后,段名有段地址、偏移地
址、定位类型、组合类型和‘类别’ 5 个属性。前3 个属性在
第4 章中已作介绍,本节要介绍后两个属性,它们用来为连接
过程提供多模块间段连接的有关信息。
第5章多模块程序设计
1) 组合类型
组合类型告诉汇编程序应为连接程序提供本段与其它段连
接的有关信息,如本段与其它段是否组合为同一段; 组合后,
本段信息与其它段信息的关系如何,等等。为了提供这样一些
信息,组合类型有如下 6 种不同的类型:NONE 、PUBLIC 、
COMMON、 AT表达式、STACK、MEMORY 。段定义时,组
合类型若被省略,隐含为NONE类型。
(1) NONE类型:表示本段与不同模块中的其它段在逻辑上
不发生关系。连接后各模块中的各段都有自己的段地址(也称基
地址) 。
第5章多模块程序设计
(2) PUBLIC类型:表明连接时,应把不同模块中属于该类
型的同名同类别的段相继地连成一个段,其中所有的变量或标
号都有相同的段地址。 连接的顺序与LINK 时用户所提供的各
模块的顺序一致(本节的最后将给出连接的基本方法) 。各模块
中属于PUBLIC类型的同名同类别的各段的总长度不能超过 64
KB 。
(3) STACK类型:与PUBLIC类型同样处理, 只是组合后
的这个段用作堆栈。当段定义中指明了STACK类型后,说明
堆栈段已经确定,所以,在可执行文件装入内存后段寄存器SS
中已是该段的段地址,堆栈指针SP 已指向堆栈底。这样,第 4
章例中为这两个寄存器传送初值的指令可以省去。
第5章多模块程序设计
(4) COMMON类型:表明连接时,应将不同模块
文档评论(0)