- 1、本文档共64页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
模块化序设计
第14章 模块化程序设计 14.1 段间调用 14.2 定义外部标识符伪指令 14.3 使用EXTRN和PUBLIC的范例 14.4 在指令段使用PUBLIC 14.5 在数据段使用PUBLIC 14.6 参数传送 14.7 C语言与汇编语言的链接 14.1 段 间 调 用 前面介绍的CALL 指令都是段内的调用,即在同一个指令段内。段内调用的CALL指令范围为0000H~FFFFH。一条段内调用指令(CALL) 的目的码是3个字节长度,例如: E8 2000 (0020) ;十六进制 十六进制E8是段内调用指令(CALL)机器指令的操作码,其操作是先把当前IP指令指针寄存器的值压入堆栈保存,这个值是CALL的下一条指令地址;然后,再把被调用的子程序的偏移地址(2000逆序)值送入IP 寄存器,IP=0020。微处理器把当前CS的值和IP的值相结合形成物理地址,此地址指向被调用子程序的第1字节。当子程序的执行中,遇到RET指令离开子程序返回时,RET指令会从堆栈中弹出IP的保留值,并把它装入IP,使程序返回到CALL的下一条指令继续执行,这个过程是段内调用。 其特点是在子程序调用、返回过程中段寄存器CS不变化,只有指令指针寄存器IP发生变化。主程序与被调用的子程序同在一个段内。 模块化程序设计必然涉及到模块间的调用问题。模块间的调用是通过段间的调用来实现的。若被调用的子程序是在现指令段之外,则称为段间调用。一条段间调用指令(CALL)的机器指令码共有5个字节。例如: 9A 0002 AF04 (04AF 0200) ;十六进制 十六进制9A是段间调用指令(CALL)机器指令的操作码。操作是:首先将CS段寄存器的值压入堆栈,并把被调用子程序所在段的段值(AF04逆序)装入CS段寄存器,CS=04AF;然后把IP指令指针寄存器的值压入堆栈,并将被调用子程序相应的偏移地址(0002逆序)装入IP,IP=0200。 这些操作建立了被调用子程序的第一条待执行指令的地址: 十六进制 段 值: CS 04AF0 偏移地址: IP + 0200 物理地址: 04CF0 当离开子程序返回时,段间调用的RET指令会从堆栈中依序弹出IP和CS两个寄存器的原值,返回到CALL的下一条指令。其特点是在子程序调用、返回过程中,段寄存器CS和指令指针寄存器IP均发生变化。主程序与被调用的子程序不在同一个段内。 14.2 定义外部标识符伪指令 当进行模块化程序设计时,首先应考虑的问题是模块间控制的耦合和数据的耦合。控制耦合就是模块在怎样的环境下如何进入又如何退出。数据耦合就是诸模块间如何进行数据通讯。例如,有一个主模块(MAINPROG)调用一个子模块(SUBPROG),它要用到一个段间调用(CALL),如图14-1所示。 主模块MAINPROG内的CALL指令,必须知道子模块SUBPROG是位于本段之外的标号。否则汇编过程中会产生一个错误信息——指出SUBPROG是一个未定义的符号。EXTRN伪指令就是执行此功能的,它告诉汇编程序SUBPROG是一个远程的标号(FAR Label),是定义在另一个模块里的。因为汇编程序无法知道真是如此,所以就产生“空的”目的操作数0000,即先空出;而由链接程序在链接时再填入确定值。例如(参考例14.4主模块程序清单): 0011 9A0000----E 子模块SUBPROG内含有一个PUBLIC伪指令,它告诉汇编程序和链接程序,其他模块需要知道SUBPROG的地址。当MAINPROG与SUBPROG都已汇编成目的模块文件后,它们可以下列的方式来链接: LINK MAINPROG+SUBPROG Run File [MAINPROG.EXE]: List File [NUL.MAP]: CON Libraries [.LIB]: 链接程序将一个目的模块内的EXTRN匹配上另一个模块内的PUBLIC,并将插入所有需要的偏移地址,然
您可能关注的文档
- 模一电子商务认知.ppt
- 模之图表大全100pptcn.ppt
- 模三建筑施工测量.ppt
- 模三市场分析与战略规划2.ppt
- 模三章.ppt
- 模九分类站的安装与调试.ppt
- 模二十.ppt
- 模二电加热温度控制系统调试.ppt
- 模二金属切削加工.ppt
- 模五剪切和挤压.ppt
- 2-红河州建筑施工安全生产标准化工地复核评分表(2022年修改版).docx
- 6.锡通项目2018年下半年工作会汇报材料(2018.7.9).docx
- 2018道路工程知识点汇总(新版).docx
- 附件3:月度生产例会安全汇报资料-站台门项目部.docx
- 附件2:广东建工集团2018年度科技成果汇总表.DOC
- 马武停车区、三汇停车区停车位管理系统,0#台账缺量.doc
- 攀成钢委办发〔2015〕19号(党风廉政建设责任考核与追究办法).doc
- 1-红河州建筑工程质量管理标准化复核评分表(2022年修改版).docx
- 中交第三公路工程局第四工程分公司项目经济合同结算管理办法(修订).doc
- 厂站安全操作规程汇编.doc
最近下载
- 设备安装调试及培训方案.docx VIP
- 2025届高考数学一轮复习备考建议课件——以“立体几何”为例.pptx
- 印刷-包装印刷培训资料.ppt
- 湖南省中小企业融资难的表现、原因以及对策.docx
- 安徽省芜湖市第二十七中学2024--2025学年上学期七年级入学测试数学卷(含答案).pdf VIP
- 年产250万吨薄板坯连铸连轧带钢生产线工艺设计剖析.docx
- 2022年新疆高考文科数学真题及答案.doc VIP
- 国家中小学智慧教育平台应用指南.pptx VIP
- 人教版七年级道法下册 第四单元第十一课 远离违法犯罪(上课、学习课件).pptx VIP
- 2024年N1叉车司机考试题及答案(1000题).doc
文档评论(0)