码迷,mamicode.com
首页 > 其他好文 > 详细

子程序的递归调用和重入

时间:2014-05-08 18:13:53      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:style   blog   class   code   java   color   

递归调用子程序

如果一个子程序直接调用他自己,这种调用称为字节递归调用,如果一个子程序间接调用自己,这种调用称为间接递归调用

递归调用子程序必须采用寄存器或堆栈传递参数,递归的深度受到堆栈空间的限制

下面的子程序递归调用实现求阶乘

bubuko.com,布布扣
;子程序说明 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
bubuko.com,布布扣

 

 可重入子程序

子程序的可重入是指子程序在中断后被重新调用,子程序的重入不同于子程序的递归,冲入是被动行为,而递归是主动行为,重入前的调用和重入调用往往是不相干的,而递归调用这是密切相关

 

我们把可以重新进入的子程序称为可重入子程序,再设计可重入子程序的时候,必须注意以下几点

【1】不能利用约定的存储单元传递参数

【2】不能使用约定的存储单元保存中间值

可重入函数在以后的设计中会提到,这里只做一般的了解

 

版权所有,转载请注明链接地址:http://www.cnblogs.com/fengdashen/p/3715520.html

 

子程序的递归调用和重入,布布扣,bubuko.com

子程序的递归调用和重入

标签:style   blog   class   code   java   color   

原文地址:http://www.cnblogs.com/fengdashen/p/3715520.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!