zoukankan      html  css  js  c++  java
  • 子程序的递归调用和重入

    递归调用子程序

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

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

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

    ;子程序说明 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

  • 相关阅读:
    centos7配置vsftpd
    vsftpd上传文件出现553 Could not create file错误解决方法
    mysql表引擎myisam改为innodb
    python字符串
    linux虚拟机设置本地yum源
    python3读取excel数据
    expect远程登录服务器并执行命令
    sed中支持变量的处理方法
    test
    test
  • 原文地址:https://www.cnblogs.com/fengdashen/p/3715520.html
Copyright © 2011-2022 走看看