mips汇编语言递归实现阶乘

mips汇编语言递归实现阶乘

递归实现阶乘,要点就是使用栈存储上一层的调用地址。

##Factorial Psudocode#######
##Fac(){
#  if ($t1==1) return 1;
#  else 
#      return $v0*Factorial($t1-1);
#     }
#cross variable#############
# $t0 -- n
# $t1 -- with initial value n  
# $v0 -- store result
############################
.data
hello: .asciiz "input a number : "
bye : .asciiz "\nbyebye "
.text
	li $v0,4
	la $a0,hello
	syscall
	li $v0,5
	syscall
	move $t0,$v0
	move $t1,$t0
	li $v0,1
Fac:	addi $sp,$sp,-8
	sw $ra,0($sp)
	sw $t1,4($sp)
	beq $t1,1,re0
	addi $t1,$t1,-1
	jal Fac
	lw $a0, 4($sp) 
	mult $v0,$a0
	mflo $v0
	beq $t1,$t0,end
	
re0:	addi $t1,$t1,1
	lw $ra,0($sp)
	addi $sp,$sp,8
	jr $ra
	
end:	move $a0,$v0
	li $v0,1
	syscall
	la $a0,bye
	li $v0,4
	syscall
	li $v0,10
	syscall
  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值