首页 > 代码库 > 子程序的递归调用和重入
子程序的递归调用和重入
递归调用子程序
如果一个子程序直接调用他自己,这种调用称为字节递归调用,如果一个子程序间接调用自己,这种调用称为间接递归调用
递归调用子程序必须采用寄存器或堆栈传递参数,递归的深度受到堆栈空间的限制
下面的子程序递归调用实现求阶乘
;子程序说明 FACT ;功能,计算N! ;入口参数:(AX) = n ;出口参数:(AX) = n! ;说明采用递归算法实现求阶乘,n不能超过8 FACT PROC PUSH DX MOV DX,AX CMP AX,0 JZ DONE DEC AX 求n-1 CALL FACT MUL DX POP DX RET DONE:MOV AX,1因为0的阶乘等于1 POP DX RET FACT ENDP
可重入子程序
子程序的可重入是指子程序在中断后被重新调用,子程序的重入不同于子程序的递归,冲入是被动行为,而递归是主动行为,重入前的调用和重入调用往往是不相干的,而递归调用这是密切相关
我们把可以重新进入的子程序称为可重入子程序,再设计可重入子程序的时候,必须注意以下几点
【1】不能利用约定的存储单元传递参数
【2】不能使用约定的存储单元保存中间值
可重入函数在以后的设计中会提到,这里只做一般的了解
版权所有,转载请注明链接地址:http://www.cnblogs.com/fengdashen/p/3715520.html
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。