第十四章 模块化程序设计与混合编程技术.docVIP

第十四章 模块化程序设计与混合编程技术.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十四章 模块化程序设计与混合编程技术.doc

第十四章 模块化程序设计与混合编程技术 1.教学目的:掌握汇编语言多模块程序设计和汇编语言与高级语言之间混合编程的基本概念、技术和方法。 2.教学要求: ①理解多模块程序设计的基本概念 ②掌握汇编语言程序的多模块连接 ③了解多模块之间段的连接与模块间的交叉访问 ④理解汇编语言与高级程序的连接的原理。 ⑤掌握汇编语言与C语言的接口的实现方法 ⑥掌握汇编语言与Pascal语言的接口的实现方法 3.教学重点: ①汇编语言与C语言的接口的实现 ②汇编语言与Pascal语言的接口的实现 4.掌握难点: ①连接的原理 5.教学进程安排:P247~285 6.教学方法: 课堂讲授 7.教学内容摘要: 14.1 多模块程序设计的基本概念 1.一个复杂程序可以分成若干个模块,可由不同人员分头完成; 2.每个模块的任务明确,便于理解; 3.单个模块易于编写和调试; 4.便于程序的维护和修改; 5.可以直接利用已有的模块。 14.2 汇编语言程序的多模块连接 14.2.1 多模块之间段的连接 ⒈ SEGMENT语句提供的连接信息 段名 SEGMENT [定位类型] [组合类型] [’类别’] ┇ 段名 ENDS (1)组合类型 (2)‘类别’ 2. GROUP伪指令 段组名 GROUP 段名〔,段名,···〕 (1)段组名 (2)段名 14.2.2 模块间的交叉访问 1. 伪指令PUBLIC和EXTRN (1)伪指令PUBLIC PUBLIC 标识符,标识符,… (2)伪指令EXTRN EXTRN 标识符:类型,标识符:类型,… 2.模块间交叉访问时的编程考虑 3.建立完整的可执行文件 (1)将各源程序模块分别汇编,并建立各自的目标模块(即建立各自的*.OBJ文件)。 (2)用连接程序LINK将这些目标模块连接成一个可执行文件。 (3)多个模块连接成一个可执行文件后,该文件只有一个启动地址,所以,连接成一个完整程序的各个源模块中只能有一个源模块中的结束伪指令END可以带表达式,以指出整个程序的启动地址。 【例14-5】多模块程序设计,利用多模块实现两个32位数的相乘。 14.3 汇编语言与高级语言程序的连接 汇编语言和高级语言混合编程,需要解决两个主要的技术问题: 1.是不同语言程序模块之间的连接, 2.是调用过程中参数的传递方法。 14.3.1 调用协议 1. 入口参数传递规则 (1)C语言调用协议 (2)Pascal语言调用协议 2. 返回值传递规则 (1)如果返回值为单字节数则放入AL; (2)如果返回值为单字则放入AX; (3)如果返回值为双字则放入DX:AX,其中DX中存放高字,AX中存放低字; (4)如果返回值大小超过双字则存放在系统静态变量存储区中,指向这个静态变量存储区的指针值在AX(近指针)或者DX:AX(远指针)内。 (5)在子程序完成预先定义的功能返回主程序时, C语言调用协议是由主程序来完成参数出栈,而Pascal语言调用协议却是由子程序来完成参数出栈工作的。 3. 寄存器保护规则 寄存器保护规则把CPU内部寄存器分为如下4类: (1)CS,IP,SS,SP,FLAGS: (2)DS,ES,FS,GS: (3)BP,SI,DI: (4)AX,BX,CX,DX: 14.3.2 汇编语言与C语言的接口 1. 模块连接法 所谓模块连接法是指分别编译/汇编C语言源程序和汇编语言源程序,然后再将目标文件进行连接,最终形成可执行文件的混合编程方法。 ⑴在TC中调用汇编子程序和变量 要使汇编语言模块和TC模块正确地连接到一起,必须处理好两点: ①汇编模块必须采用和TC模块一致的存储模式; ②汇编模块还必须遵守与TC兼容的命名约定,命名约定包括段组命名约定和函数/变量命名约定。 TC调用汇编语言子程序的主要步骤。 a. 在汇编语言编程方面 ①使用和C相同的存储模式定义各个段空间,没有用到的段可以不定义。 ②在汇编语言源程序中用PUBLIC伪指令声明C需要引用的子函数和变量。 ③按照C语言调用协议从堆栈中取得入口参数。 ④对参数进行处理,实现相应的功能。 ⑤将返回值送入AX或者DX:AX中返回。 ⑥使用汇编程序MASM汇编源程序形成目标文件。 b. 在TC编程方面 ①在C语言源程序中用extern语句声明汇编语言子函数和变量。 ②在程序中像引用本地函数和变量一样,引用这些汇编语言子函数和变量。 ③编译源程序形成目标文件。 ④使用TLINK连接C语言和汇编语言的目标文件,形成可执行文件。 ⑤执行程序进行验证和调试。 【例14-6】设TC源程序在小模式下编译连接,试编写一个供TC调用的汇编语言子函数max。 【例14-7】对例14-6中的C语言源程序callmax改用大模式编译连接,试编写汇编语言源程序实现max函数。 【例14

您可能关注的文档

文档评论(0)

dzzj200808 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档