我试图编写一个MIPS程序,它获取一个无符号整数作为参数,并以递归方式返回整数中所有小数位的和。例如,如果参数是75080,则返回的总和是20(7 + 5 + 0 + 8 + 0)。这是我的代码到目前为止。任何帮助,将不胜感激。MIPS递归
我的想法是将数字除以10,留下数字中的最后一个整数,使用mfhi添加提醒。
.data
prompt: .asciiz "Enter a string of integer: "
output: .asciiz "\nThe total sum is: "
.text
.globl main
main:
la $a0, prompt
li $v0, 4
syscall
li $v0, 5
syscall
move $t2, $v0
la $a0, output
li $v0, 4
syscall
Loop:
div $t2, $t2, 10
mflo, $t1
mfhi, $t3
beqz $t1, Exit
add $t1, $t1, 0
b additive
additive:
add $t0, $t1, $t1
j Loop
Exit:
la $a0, output
li $v0, 4
syscall
la $v0, 10
syscall
什么操作系统是这个地方的系统调用4让您打印的提示没有给出一个缓冲区长度,和系统调用5让你这已经转换为一个整数输入? – Kaz 2012-04-07 06:21:02
我不记得MIPS是否是这种方式,但在某些系统中,重要的是从高位移动到低位命令的顺序进来,如果我记得有关MIPS的事实上是正确的,那么您可能已经获得了这倒退了。 – 2012-04-07 06:44:49
这是http://stackoverflow.com/questions/10031785/iteration-and-recursive-in-mips的转贴 – bta 2012-04-10 17:53:30