- 1、本文档共179页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第6章子程序设计;6.1子程序的概念与特性;例如,计算某个数的立方根可能在一个程序中使用多次,但每次自变量不同。又如,设计名字识别程序时,有时需要判断字符是否为字母,有时又需要判断字符是否为分隔符。这样的指令组所包含的指令,少则几条十几条,多则数十条几百条。如果每一处都重复把它写一次,这显然太浪费程序设计的时间和计算机的存储空间。但这又不能设计成循环程序。因此,人们通过实践,在程序设计的早期就想出了一种较好的办法,就是把这组指令分离出来,单独写成一个所谓的“子程序”,并建立进入它和从它出来时所需要的连接信息。只需在需要处调用这个子程序就行。换言之,子程序方法使得人们把“多次编写”的情况转变成“一次编写,多次调用”的情况。子程序相当于高级语言中的过程或函数。;图6-1主程序与子程序的关系;在程序设计的实际应用中,子程序的引入可以节省存储空间及程序设计所花费的时间,有利于设计一个大而复杂的程序,即把一个大而复杂的程序设计成一个主程序和若干个子程序。这有助于减少程序的复杂性,便于模块化设计,也便于程序的调试及修改等。但子程序也有其不足之处,这就是要多花费一些机器时间。;6.1.2子程序的分类
子程序的种类很多,有单入口、单出口子程序,也有多入口、多出口子程序。对于一些复杂的子程序,还常常要调用别的子程序。这种调用可以是一个子程序调用另外的一个子程序,也可以是一个子程序调用自身,这就形成了嵌套结构和递归结构,分别称为嵌套子程序和递归子程序。子程序嵌套的示意图如图6-2所示。;图6-2嵌套子程序示意图;6.1.3子程序的特性
1.通用性
子程序具有通用性,便于共享。例如,键盘管理程序,磁盘读写程序,标准函数程序等等,许多程序中要用到这些程序,这种可共享的程序最适宜写成子程序。而只能完成特定功能的子程序,由于缺乏通用性,难于共享,就不适宜写成子程序。;2.重复性
子程序是可多次重复使用的。—个子程序只占一段存储空间,但可以多次地调用它,这样就避免了编程人员的重复劳动,节省了存储空间。由于增加了调用、返回指令以及现场保护,因此程序执行时间会增长。如果一个程序段只用到一次,就没有必要编写成子程序形式。;3.可重定位性
可重定位性是指子程序可以存放在存储区的任何地址处。如果子程序只能存放在固定的地址处,则在编写主程序时要特别注意存储单元的分配,不要使主程序占用了子程序的存储单元而破坏子程序,这样就会给编程人员带来很大麻烦,而且在装配主程序和子程序时往往造成存储空间的冲突或浪费。为了使子程序可重定位在内存的任意区域中,编制子程序时,不应采用绝对地址,而应全部使用相对地址。;4.可递归性
前面已提及递归程序的概念。在图6-2中,当子程序1和子程序2是同一个程序时,这种调用就是递归调用。为使子程序具有可递归性,应当利用堆栈和寄存器作为中间结果的暂存器,而不能用固定的存储单元做暂存器。;5.可重入性
可重入性是指子程序可被中断并能再次被中断程序调用。具体地讲就是,如果子程序可被中断,在中断处理中又被中断服务程序调用,并且能为中断服务程序和中断了的子程序提供正确的结果,这种子程序就是可重入的。同样,为使子程序具有可重入性,也应当利用堆栈和寄存器作为中间结果的暂存器,而不能用固定的存储单元做暂存器。;6.2子程序的结构形式;说明:
(1)PROC和ENDP是过程的定义符和结束符,它们必须成对出现,它们前面的过程名必须一致,过程名为一标识符,它的写法和标号的写法相同,它实际上是子程序入口的符号地址。
(2)类型属性可以是NEAR或FAR两种类型,缺省时为NEAR属性。过程属性的确定方法是当调用过程(主程序)和被调用过程(子程序)在同一个代码段中则用NEAR属性;当调用过程和被调用过程不在同一个代码中则使用FAR属性。;(3)在子程序设计中,除了子程序必须经过定义以外,还必须解决主程序和子程序的链接、主程序和子程序的参数传递这两个问题。主程序和子程序的链接是通过执行调用指令和返回指令实现的,而主程序和子程序的参数传递可有多种方式,这将在6.5节中讨论。先讨论第一个问题。
1)调用程序和子程序在同一个代码段的程序结构
若调用程序和子程序在同一个代码段内,其程序框架如例6-1所示。此程序给出了代码段中含有主程序和一个子程序的情况,实际上可以含有多个子程序,子程序可以是NEAR型或缺省。注意段长不能超过64KB。;例6-1
CODE SEGMENT
MAIN PROC FAR
PUSH DS
MOV AX
您可能关注的文档
- 医院感染与标准预防.pptx
- 苏教小学音乐五下《6沃尔塔瓦河》课件-(3).ppt
- 八上物理新人教版初中物理23-声的利用公开课教案教学设计课件测试卷练习卷课时训练练习公开课教案.ppt
- 九年级物理上册132电路的组成和连接方式省公开课一等奖新课获奖课件.pptx
- 北师大版数学四年级下册《猜数游戏》 .ppt
- 2022年高校大数据应用平台建设方案-智慧校园大数据建设方案-智慧高教大数据建设方案.pptx
- 公开课教案教学设计课件北师大初中语文七上《从百草园到三味书屋》课件-(五).ppt
- 合理使用抗生素课件.ppt
- 我知我师我爱我师公开课一等奖课件省赛课获奖课件.pptx
- 中国文化走向世界.pptx
最近下载
- 汽车电器安(改)装_教材试卷B卷有答案.pdf VIP
- 汽车电器安(改)装_教材试卷C卷.pdf VIP
- 汽车电器安(改)装_教材试卷A卷.pdf VIP
- 【汽车电器安(改)装实训】项目一 中控防盗系统安装_实训指导手册.pdf VIP
- 2025福建莆田市公安局北岸分局招聘警务辅助人员35人笔试备考试题及答案解析.docx VIP
- 【汽车电器安(改)装实训】项目五 辅助倒车系统的安装_实训指导手册.pdf VIP
- 物业起诉业主不交物业费官司的超完美答辩状之欧阳道创编.pdf
- 汽车发动机构造与维修实训报告.pptx
- 汽车发动机构造与维修实训指导书.doc
- 建筑工程复工安全生产方案.docx VIP
文档评论(0)