下载此文档

第6章子程序结构.ppt


文档分类:汽车/机械/制造 | 页数:约32页 举报非法文档有奖
1/32
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/32 下载此文档
文档列表 文档介绍
第6章子程序结构
子程序的概念
子程序的设计方法
子程序的参数传送
子程序的嵌套与递归
1
子程序的概念
子程序概念
把可以多次调用、能够完成特定操作功能的程序段编写成独立的程序模块,该程序模块称为子程序,又称为过程。调用这些子程序的程序称为主程序。
结构化程序设计方法的一个核心思想是程序的模块化,它可把一个大的复杂的应用程序按功能分解成若干个相对独立的模块,这个模块就叫做子程序。通过模块的组合来完成一个大的复杂的应用程序的编写。
模块化程序设计优点:
1) 方便开发、调试和调用。
2)子模块本身可以反复被调用,可避免重复输入。
2
主程序与子程序之间的关系
在主程序中,如果调用到子程序,就需要把控制转移到子程序,
这个过程称为转子。子程序执行完了,要把控制再返回到主程序,
这个过程称为返主。。
3
如何实现?
可以使用子程序、过程、自定义函数来实现模块化程序设计。
子程序是一个为实现某个功能的独立程序。其特点是:它总被其它程序调用而一般不能单独执行。通常把调用它的程序称为主程序,被主程序调用的程序称为子程序。当然,其概念也是相对的,即子程序也可以调用其他子程序。
4
子程序具有如下4个特性:
(1) 重复性。一个子程序只占用一段存储区域,但可以多次被调用,避免了编程人员的重复劳动,又节省程序的存储空间。由于增加了调用、返回等指令,因此程序执行时间会长些。如果一个程序段只用到一次,就没有必要编写成子程序形式。
(2) 通用性。只能完成特定功能的子程序用处不大,例如,只能实现5个字节加法运算的多字节加法子程序和只能在定长字符串上查找某一固定字符的子程序都没有通用性,因而用处也就不大。要能够得到广泛应用的通用的多字节加法子程序,字节数应该是任意的,字符查找子程序、字符串的长度和查找的字符都应是任意的。
5
(3) 可浮动性。
所谓可浮动性,就是说子程序可以存放在存储区的任何地址处。假如子程序只能存放在固定的地址处,则在编写主程序时要特别注意存储单元的分配,不要使主程序占用了子程序的存储单元而破坏掉子程序,这样就会给编程人员带来很***烦,而且在装配主程序和子程序时往往造成存储空间的冲突或浪费。
(4) 可递归和可重入性。
如果子程序能够调用其本身,则称其可递归调用。
如果子程序可被中断,在中断处理中又被中断服务程序调用,并且能为中断服务程序和已中断的子程序两者都提供正确的结果,那么称该子程序是可重入的。
为使子程序具有可递归和可重入性,应当利用堆栈和寄存器作为中间结果的暂存器,而不能用固定的存储单元作暂存器。
6
子程序的设计方法
本小节只给出MASM提供的基本的子程序定义伪操作,从宏汇编编译程序MASM ,这将在以后各有关章节加以说明。
7
过程(子程序)定义伪操作用在过程(子程序)的前后,使整个子程序形成清晰的、具有特定功能的代码块。其格式为
PROCEDURE NAME PROC ATTRIBUTE 
PROCEDURE NAME ENDP
其中,过程名(子程序)为标识符,它又是子程序入口的符号地址。它的写法与标号的写法相同。属性(Attribute)是指子程序的类型属性,可以是NEAR或FAR。
如前所述,CALL和RET指令都有NEAR和FAR的属性。段内调用使用NEAR属性,但可以隐含;段间调用使用FAR属性。为了使用户的工作更方便,80x86的汇编程序用PROC伪操作的类型属性来确定CALL和RET指令的属性。也就是说,如果所定义的子程序是FAR属性的,那么对它的调用和返回一定都是FAR属性的;
8
如果所定义的子程序是NEAR属性的,那么对它的调用和返回也一定是NEAR属性的。这样,用户只需在定义子程序时考虑它的属性,而CALL和RET的属性可以由汇编程序来确定。子程序属性的确定原则很简单,即:
①如调用程序和子程序在同一个代码段中,则使用NEAR属性;
②如调用程序和子程序不在同一个代码段中,则使用FAR属性。
9
【例6-1】调用程序和子程序在同一代码段中。
MAIN PROC FAR ;主程序
CALL SUBR1 
RET
MAIN ENDP
;
SUBR1 PROC NEAR ;子程序(NEAR可省略) 
RET
SUBR1 ENDP
由于调用程序MAIN和子程序SUBR1在同一代码段中,所以SUBR1定义为NEAR属性。这样,MAIN中对SUBR1的调用和SUBR1中的RET就都是NEAR属性的。但是一般说来,主子程序MAIN应定义为FAR属性,这是由于把程

第6章子程序结构 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数32
  • 收藏数0 收藏
  • 顶次数0
  • 上传人birth201208
  • 文件大小372 KB
  • 时间2018-11-29