부호없는 정수를 인수로 가져 와서 정수의 모든 십진수 합계를 재귀 적으로 반환하는 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
syscall 4를 사용하면 버퍼 길이를 지정하지 않고 프롬프트를 인쇄 할 수 있으며 syscall 5는 이미 정수로 변환 된 입력을 가져옵니다. – Kaz
MIPS가 이런 식인지 아닌지는 기억이 나지 않지만 일부 시스템에서는 높은 명령에서 낮은 명령으로 이동하는 명령이 중요합니다. MIPS에 대해 기억하는 것이 맞다면 실제로 유효 할 것입니다. 이 거꾸로. –
이것은 http://stackoverflow.com/questions/10031785/iteration-and-recursive-in-mips의 재 게시입니다. – bta