java mips_MIPS,递归

方法很简单 . 你需要递归函数,我把它命名为SumDigits,它将采用参数中所有数字的最后一个数字和重复过程 . 递归调用返回后,您将向前一个结果添加数字 . 对代码进行了评论以便于理解 . 代码如下:

.text

#calculates sum of digits recursively

SumDigits:

sub $sp, $sp, 12 #alloocate 12B on stack

sw $ra 0($sp) #save return address

sw $a0, 4($sp) #save argument

beq $a0, $0, exit_sumdigits #when there is no more digits return 0

rem $t0, $a0, 10 #get last digit

sw $t0, 8($sp) #save it on stack

div $a0, $a0, 10 #divide argument by 10

jal SumDigits #repeat procedure

lw $t0, 8($sp) #read digit from stack

add $v0, $v0, $t0 #add digit to previous result

lw $ra, 0($sp) #load return address

addi $sp, $sp, 12 #free stack

jr $ra #return

exit_sumdigits:

li $v0, 0 #there are no more digits, return 0

lw $ra, 0($sp) #load return address

addi $sp, $sp, 12 #free stack

jr $ra #return

main:

li $a0, 75080 #load number in $a0

jal SumDigits #call SumDigits

move $a0, $v0 #set a0 = result of SumDigits

li $v0, 1 #set $v0 for print int system call

syscall

li $v0, 10 #set $v0 for exit system call

syscall

.data

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值