第章子程序设计 4.可递归性 前面已提及递归程序的概念。在图6-2中,当子程序1和子 程序2是同一个程序时,这种调用就是递归调用。为使子程序具 有可递归性,应当利用堆栈和寄存器作为中间结果的暂存器, 而不能用固定的存储单元做暂存器
第6章 子 程 序 设 计 4.可递归性 前面已提及递归程序的概念。在图6-2中,当子程序1和子 程序2是同一个程序时,这种调用就是递归调用。为使子程序具 有可递归性,应当利用堆栈和寄存器作为中间结果的暂存器, 而不能用固定的存储单元做暂存器
第章子程序设计 5.可重入性 可重入性是指子程序可被中断并能再次被中断程序调用。 具体地讲就是,如果子程序可被中断,在中断处理中又被中断 服务程序调用,并且能为中断服务程序和中断了的子程序提供 正确的结果,这种子程序就是可重入的。同样,为使子程序具 有可重入性,也应当利用堆栈和寄存器作为中间结果的暂存器, 而不能用固定的存储单元做暂存器
第6章 子 程 序 设 计 5.可重入性 可重入性是指子程序可被中断并能再次被中断程序调用。 具体地讲就是,如果子程序可被中断,在中断处理中又被中断 服务程序调用,并且能为中断服务程序和中断了的子程序提供 正确的结果,这种子程序就是可重入的。同样,为使子程序具 有可重入性,也应当利用堆栈和寄存器作为中间结果的暂存器, 而不能用固定的存储单元做暂存器
第章子程序设计 6.2子程序的结构形式 6.2.1子程序的定义 子程序必须经过定义以后才能被调用。其定义格式如下: 过程名PROC类型属性 过程体 过程名ENDP 功能:实现子程序的定义
第6章 子 程 序 设 计 6.2 子程序的结构形式 6.2.1 子程序的定义 子程序必须经过定义以后才能被调用。其定义格式如下: 过程名 PROC 类型属性 ;过程体 过程名 ENDP 功能:实现子程序的定义。 …
第章子程序设计 说明: (1)PROC和ENDP是过程的定义符和结束符,它们必须成对 出现,它们前面的过程名必须一致,过程名为一标识符,它的 写法和标号的写法相同,它实际上是子程序入口的符号地址。 (2)类型属性可以是NEAR或FAR两种类型,缺省时为NEAR属 性。过程属性的确定方法是当调用过程(主程序)和被调用过程 (子程序)在同一个代码段中则用NEAR属性;当调用过程和被调 用过程不在同一个代码中则使用FAR属性
第6章 子 程 序 设 计 说明: (1) PROC和ENDP是过程的定义符和结束符,它们必须成对 出现,它们前面的过程名必须一致,过程名为一标识符,它的 写法和标号的写法相同,它实际上是子程序入口的符号地址。 (2) 类型属性可以是NEAR或FAR两种类型,缺省时为NEAR属 性。过程属性的确定方法是当调用过程(主程序)和被调用过程 (子程序)在同一个代码段中则用NEAR属性;当调用过程和被调 用过程不在同一个代码中则使用FAR属性
第章子程序设计 (3)在子程序设计中,除了子程序必须经过定义以外,还 必须解决主程序和子程序的链接、主程序和子程序的参数传递 这两个问题。主程序和子程序的链接是通过执行调用指令和返 回指令实现的,而主程序和子程序的参数传递可有多种方式, 这将在6.5节中讨论。先讨论第一个问题。 1)调用程序和子程序在同一个代码段的程序结构 若调用程序和子程序在同一个代码段内,其程序框架如例6-1 所示。此程序给出了代码段中含有主程序和一个子程序的情况, 实际上可以含有多个子程序,子程序可以是NAR型或缺省。注 意段长不能超过64KB
第6章 子 程 序 设 计 (3) 在子程序设计中,除了子程序必须经过定义以外,还 必须解决主程序和子程序的链接、主程序和子程序的参数传递 这两个问题。主程序和子程序的链接是通过执行调用指令和返 回指令实现的,而主程序和子程序的参数传递可有多种方式, 这将在6.5节中讨论。先讨论第一个问题。 1) 调用程序和子程序在同一个代码段的程序结构 若调用程序和子程序在同一个代码段内,其程序框架如例6-1 所示。此程序给出了代码段中含有主程序和一个子程序的情况, 实际上可以含有多个子程序,子程序可以是NEAR型或缺省。注 意段长不能超过64 KB