网站大量收购闲置独家精品文档,联系QQ:2885784924

第6章子程序设计 - 第五章汇编语言程序设计.ppt

第6章子程序设计 - 第五章汇编语言程序设计.ppt

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章子程序设计 - 第五章汇编语言程序设计

第6章 子程序设计 教学目标:掌握子程序的调用和返回指令;子程序的设计方法;子程序的参数传递。 教学重点:子程序的参数传递。 教学难点:子程序的参数传递。 6.1 模块化程序设计 模块化程序设计——是一种良好的程序设计方法,其基点是模块的划分。一般根据任务的大小和性质,自顶向下逐层分解模块:主模块分列出任务的各项基本功能,各项基本功能由主模块下的基本功能模块实现,基本功能模块再控制其下层的子模块,自顶向下依次划分下去,直至完成各个细节操作,实现所有功能。主模块是总控模块,实行分层管理。 模块化程序结构清晰,可读性好,可靠性高,便于将大型程序分解成若干独立模块,由多人同时分别设计、调试,最后连接成一个可执行文件。整个程序开发周期短,调试、维护方便,开发和运行成本低。 什么是模块?从汇编程序设计的角度看,能够独立汇编的一个或若干个逻辑段的集合就是一个模块。 每个模块都可以有自己的数据段、代码段和附加段(至少有一个代码段)。模块化程序中每个模块都能独立汇编,但只有一个主模块,其它都是子模块。子程序是模块化程序设计的重要方法。 科学划分模块,是成功设计模块化程序的前提。划分模块应遵循如下基本原则: ①???对任务总体规划,科学分解,自顶向下逐层分块并细化; ②??模块功能单一清晰,整体性好,内聚度高,独立性强;模块内合理使用顺序、 分支、循环三种基本程序结构,尽量不使用无条件转移语句(以免破坏结构的 完整性); ③?模块之间的控制耦合尽可能简单,每个模块应只有一个入口和一个出口,这样 利于调试,不易出错; ④? 模块之间的数据耦合尽量少,即模块之间的数据传送量要少,传送方式规范; 模块大小适中,太大削弱了模块化带来的好处,太小使模块连接、数据传送所占用的资源开销比重加大,经验表明,一个模块的语句在20~100之间较为适宜。 6.2 子程序设计 子程序的开始部分应有清晰的说明:说明子程序的功能、名称、子程序的入口参数、出口参数,以及子程序所用到的寄存器、存储单元,等等。 子程序允许有多个入口和出口。为程序调试方便,应尽量减少入口/出口数量,一个入口和一个出口最有利于程序的调试。 调用程序和子程序之间可以传递参数。子程序可分为无参子程序和有参子程序,有参子程序更加灵活,更具通用性。参数传递通常有三种途径:寄存器传递(适宜较少参数传递)、堆栈传递、内存单元传递。 子程序主要通过过程定义及多模块编程等方法来实现。 1. 过程定义和声明 (1) 过程定义 过程一般用PROC/ENDP作为定界语句。参照高级语言的函数形式,MASM 6.x扩展了伪指令PROC功能,使之具有参数传递能力。格式如下: 过程名 PROC [调用距离] [语言类型] [作用范围] [起始参数] [USES寄存器列表] [,参数:[类型],…,参数:[类型]] [ LOCAL 变量名 [个数][:类型][,…] ┆ ] {可有多条LOCAL子语句} ┆ {过程体,是汇编语言语句的集合} 过程名 ENDP 其中…是必选项,[…] 内是可选项 。 6.2 子程序设计(续) 过程名: 过程名称的唯一标识符。 调用距离: NEAR或FAR,表示过程是近调用还是远调用,是可选项。简化段格式中默认值由.MODEL语句选择的存储模式决定。 语言类型:可选项,确定过程采用的命名约定和调用约定,可以是MASM 6.x支持的任何有效的语言类型,如下表所示。简化的段格式中由.MODEL伪指令指定。 作用范围:可选项,表示该过程对其它模块是否可见,有PUBLIC(对外可见)、PRIVATE(对外不可见)、EXPORT(隐含PUBLIC和FAR,该过程应该放置在导出表Export Entry Table中)三种。 6.2 子程序设计(续) 起始参数:表示传送起始代码的参数,必须用尖括号括起来,多个参数用逗号分隔。汇编程序将自动创建过程的起始代码(Prologue Code)和收尾代码(Epilogue Code),用于传递堆栈参数和清除堆栈。 寄存器列表:通用寄存器名,多个寄存器名用空格分隔。汇编程序将在起始代码产生相应的入栈指令,在收尾代码产生相应的出栈指令。 参数:[类型]:表示该过程使用的形式参数及其类型,可以是任何MASM有效的类型;默认类型是字WORD(16位段)和双字DWORD(32位段)。 在PROC语句格式中,要使用[参数]选项,必须定义[语言类型]选项。 ◆若定义C、SYSCALL、STDCALL语言类型,则[参数]选项还可以是 VARARG(表示长度可变参数)类型。 ◆ [参数]前的各个选项以空格分隔,而[参数

文档评论(0)

ligennv1314 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档