递归的汇编实现(8)- -

http://mikeyao1.bokee.com/2587140.html


这里用汇编实现了斐波那切数的递归调用。

.include "int2str_func.s"
        
.text
        .global _start

_start:
        pushl %ebp
        movl %esp, %ebp
        
        pushl $10               # 10的斐波那切数
        call factorial       # 调用斐波那切数函数

        #打印结果
        pushl %eax
        call int2str

        movl %ebp, %esp
        popl %ebp

        movl $1, %eax
        movl $0, %ebx
        int $0x80

# 斐波那切函数的声明
        .type factorial, @function
factorial:
        pushl %ebp               
        movl %esp, %ebp       
        
        movl 8(%ebp), %eax        # 保存传入的参数
        cmp $1, %eax                   # 比较是否等于1
        je return                                # 等于1递归调用结束

        decl %eax                        # 参数递减
        
        # 开始递归调用
        pushl %eax       
        call factorial
        
        imull 8(%ebp), %eax        # 递归结束后, 与上一次调用所传入的参数相乘,最终得到结果存入eax

# 返回递归函数的中间结果
return:
        movl %ebp, %esp            # exit current stack frame
        popl %ebp                     # return current stack frame to previous stack frame
        ret





























  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值