- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
                        查看更多
                        
                    
                第七章 子程序设计 7.1 概述 7.2 子程序定义、调用和返回 7.3 子程序的参数传递方法 7.4 子程序设计举例  7.1 概述 1 子程序的概念    被独立出来的程序段称为子程序。    调用子程序的程序称为主程序。    当子程序执行完后,返回调用的位置继续执行,称子程序返回。 2 子程序的特性 (1)功能独立  一个子程序通常完成一个相对独立的功能。 (2)通用性 子程序中的某些量应能变化从而具有通用性。    (3)可浮动性 子程序可以存放在存储区的任意地址处。 (4)可递归性和可重入性   如果子程序能够调用本身,则为可递归性;  如果子程序可以被中断,中断处理中又被中断服务程序调用,并且能为中断服务程序和中断了的子程序都提供正确的结果,则称为可重入的。  3 子程序的优点 ①简化了程序设计过程; ②缩短了程序的长度; ③增加了程序的可读性 ④方便了程序的模块化、结构化和自顶向下的程序设计。 7.2子程序的定义、调用、返回 (1)子程序的定义 子程序名	proc [near|far] 	... 子程序名	endp        说明:  ①NEAR属性(段内近调用)的子程序只能被相同代码段的其他程序调用;  ②FAR属性(段间远调用)的子程序可以被相同或不同代码段的程序调用。  ③主程序和子程序在同一代码段中,为NEAR 主程序和子程序在不同的代码段中,为FAR    ④为了在不了解子程序内部算法的前提下能够很好地使用子程序,一个完整子程序应包括子程序调用方法说明。其具体内容: [1]子程序名 [2]子程序功能 [3]占用寄存器 [4]入口参数 [5]输出参数 [6]子程序调用示例 ⑤现场保护与恢复   现场保护:将子程序中使用的寄存器的原来内容保存起来。   现场恢复:子程序结束时将保存的数据取出送回原来的寄存器。   子程序中的现场保护与恢复操作,不影响主程序对这些寄存器的使用。   保护与恢复是通过堆栈来实现的。  例:子程序SUB1中将用到寄存器AX、BX、CX,则可能的现场保护与恢复如下: SUB1  PROC    PUSH AX    PUSH BX    PUSH CX     POP CX    POP BX    POP AX    RET SUB1 ENDP (2)子程序调用   CALL  子程序名  (段内调用)   CALL  FAR PTR 子程序名 (段间调用) (3)返回   RET   (段内调用/段间调用)  4、子程序的位置 (1)子程序和主程序在同一代码段,此时可放在主程序的结尾处,即在返回DOS后,CODE ENDS前。 (2)子程序和主程序在不在同一代码段,但在同一源文件中。 (3)子程序单独作为一个源文件 例1:CODE SEGMENT    ASSUME CS:CODE START:CALL DISP       MOV AH,4CH       INT 21H DISP PROC  (NEAR)      MOV DL,P      MOV AH,2      INT 21H      RET DISP ENDP CODE ENDS    END START 例2:CODE1 SEGMENT       ASSUME  CS:CODE1 START:CALL FAR PTR DISP       MOV AH,4CH       INT 21H CODE1 ENDS CODE2 SEGMENT      ASSUME CS:CODE2 DISP PROC FAR      MOV DL,P      MOV AH,2      INT 21H      RET DISP ENDP CODE2 ENDS      END START  例3:(MAIN.ASM、SUB.ASM) EXTRN DISP:FAR CODE1 SEGMENT       ASSUME  CS:CODE1 START:CALL FAR PTR DISP       MOV AH,4CH       INT 21H CODE1 ENDS      END START  PUBLIC  DISP CODE2 SEGMENT      ASSUME CS:CODE2 DISP PROC FAR      MOV DL,P      MOV AH,2      INT 21H      RET DISP ENDP CODE2 ENDS      END   说明: [1]关于外部符号   在本模块中定义,又在本模块中引用的符号称局部符号。    在另一模块中定义,而在本模块中引用的符号称为外部符号。    两个与外部符号相关的伪操作   PUBLIC symbol[,…]  在一个模块中定
                 原创力文档
原创力文档 
                        

文档评论(0)