Я пытаюсь написать программу MIPS, которая получает целое число без знака в качестве аргумента и возвращает сумму всех десятичных цифр в целочисленном рекурсивно. Например, если аргумент равен 75080, тогда возвращаемая сумма равна 20 (7 + 5 + 0 + 8 + 0). Вот мой код до сих пор. Любая помощь будет оценена по достоинству.MIPS, Recursion
Мой образ мышления состоял в том, чтобы разделить число на 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
Какая ОС это, когда syscall 4 позволяет распечатать приглашение без указания длины буфера, а syscall 5 получает вход, который уже преобразован в целое число? – Kaz
Я не помню, является ли MIPS таким способом или нет, но в некоторых системах имеет значение, в каком порядке происходит переход с высокого уровня и переход от низких команд, и если что-то, что я помню о MIPS, действительно правильно, вы, возможно, получили это назад. –
Это сообщение http://stackoverflow.com/questions/10031785/iteration-and-recursive-in-mips – bta