- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
多模块程序设计与混合编程
第9章 多模块程序设计与混合编程 9.1 多模块程序设计的基本概念 9.2 汇编语言程序的多模块连接 9.3 汇编语言与高级程序的连接 习题9 9.1 多模块程序设计的基本概念 在汇编语言程序设计中,源程序所涉及的标识符(变量、标号、段名和过程名等)都在本程序中定义,它与本程序之外的标识符不发生任何关系,这种程序设计称为单模块程序设计。本章将介绍多模块程序设计方法,也称为模块化程序设计方法。所谓模块,从功能上讲它可以是整个大程序中较为独立的一个部分,从源程序结构形式上讲它是由END结束的一个完整程序。 一个源模块可以单独汇编,形成自己的目标模块。最后,由连接程序将各个目标模块连接成一个可执行程序。采用模块化程序设计有下面一些优点: (1) 一个复杂程序可以分成若干个模块,可由不同人员分头完成; (2) 每个模块的任务明确,便于理解; (3) 单个模块易于编写和调试; (4) 便于程序的维护和修改; (5) 可以直接利用已有的模块。 采用模块化程序设计时,必须合理分割模块,严格定义各模块的输入、输出参数和各模块间的通信方式。 在单模块程序设计时,模块内所用到的段、变量及标号等各种标识符都必须在本模块内给予定义,否则汇编时将会给出错误信息。多模块程序设计时,由于各个模块都是整个程序的一个部分,因此,各模块之间不仅会有数据上的传递,而且会出现各模块间的变量、标号等标识符的交叉引用。 如何实现这种交叉引用,如何实现各模块间各段的连接是汇编语言多模块程序设计的重要问题,也是本章要叙述的主要内容。此外,多程序模块的连接不仅适用于汇编语言的程序模块,也适用于汇编语言程序模块与高级语言的程序模块的连接。 9.2 汇编语言程序的多模块连接 9.2.1 多模块之间段的连接 1.SEGMENT语句提供的连接信息 段定义的完整语句为 段名 SEGMENT [定位类型] [组合类型] [类别] ? 段名 ENDS 在第4章中已指出,段定义后,段名有段地址、偏移地址、定位类型、组合类型和类别 5个属性,前3个属性在第4章中已作过介绍,本节要介绍后两个属性,它们用来为连接过程提供多模块间段连接的有关信息。 1) 组合类型 组合类型告诉汇编程序应为连接程序提供本段与其他段连接的有关信息,如本段与其他段是否组合为同一段,一旦组合后,本段信息与其他段信息的关系如何等等。组合类型有6种不同的类型:NONE、PUBLIC、COMMON、AT表达式、STACK和MEMORY。段定义时,组合类型若被省略,则隐含为NONE类型。 NONE类型表示本段与不同模块中的其他段在逻辑上不发生关系,连接后各模块中的各段都有自己的段地址(也称基地址)。 PUBLIC类型表明连接时,应把不同模块中属于该类型的同名同类别的段相继地连成一个段,其中所有的变量或标号都有相同的段地址,连接的顺序与LINK时用户所提供的各模块的顺序一致(本节的最后将给出连接的基本方法)。各模块中属于PUBLIC类型的同名同类别的各段的总长度不能超过64 KB。 STACK类型与PUBLIC类型的处理方法一样,只是组合后的这个段用作堆栈。当段定义中指明了STACK类型后,说明堆栈段已经确定,所以,在可执行文件装入内存后段寄存器SS中已是该段的段地址,堆栈指针SP已指向堆栈栈底。故在一般示例中的这两个寄存器传送初值的指令可以省去。 COMMON类型表明连接时,应将不同模块中属于该类型的同名同类别的各段连接成一段,它们共用一个基地址,且互相覆盖。连接后,段的长度取决于最长的COMMON段的长度。 AT表达式类型表明连接时,应将本段装在根据表达式求值得到的16位段地址上,表达式也可以是一个有效的常数。该类型可以将我们要定义的段设定在固定的地址范围内。必须注意,定义AT类型的段内不应包括任何指令语句或有初值的变量定义语句,但该段内允许设定标号,与标号有相同属性的过程定义语句或无初值的变量定义语句,这种类型仅仅用来将该段指向内存区中的某个段, 使该段的段名及段内的变量与指向的内存区的段地址有关。例如,若要用一个过程名SUB1代表BIOS中的某段子程序,我们可以这样定义一个段
您可能关注的文档
最近下载
- 中学语文课外活动计划.docx VIP
- 打造高水平双师队伍的探索与实践——以深圳职业技术学院物流管理专业为例.pdf VIP
- “双高计划”背景下高水平“双师型”教师队伍建设路径探究.docx VIP
- FANUC机器人..ppt VIP
- (新教材)部编人教版一年级上册语文全册核心素养教案(教学反思有内容+二次备课版).pdf
- 《“双高计划”背景下高职院校高水平双师队伍建设研究》总结报告.docx VIP
- 《中医学》舌诊--课件.ppt VIP
- 北京大学口腔医学院《352口腔综合》[专业硕士]历年考研真题汇编合集.docx
- GB T 42061-2022 医疗器械标准 条款讲解 培训教程.pptx VIP
- 2024年成都中医药大学辅导员招聘考试笔试题库及答案解析.docx VIP
文档评论(0)