MIPS atrapado en un bucle infinito
Como parte de mi informe universitario, se me pide editar un código MIPS y poner el código repetitivo en una subrutina, sin embargo, cada vez que llamo a mi subrutina, se queda atrapado en un ciclo infinito repitiendo toda la subrutina. El programa debe tomar 4 entradas del usuario, sumarlas y mostrar el total, lo cual funciona sin la subrutina. No estoy seguro si me falta algo en mi código o si simplemente lo he escrito mal. ¡Gracias por cualquier ayuda! :]
.data
enterMsg1: .asciiz "Por favor, ingrese los últimos cuatro dígitos de su número de estudiante \n"
enterMsg2: .asciiz "Presione enter entre cada dígito \n"
enterMsg3: .asciiz "Ingrese el siguiente dígito \n"
totalMsg1: .asciiz "La suma de los dígitos es: "
.text
# Imprimir texto de instrucción inicial a la consola
addi $v0, $zero, 4
la $a0, enterMsg1
syscall
# Imprimir texto de instrucción secundario a la consola
addi $v0, $zero, 4
la $a0, enterMsg2
syscall
# Leer un entero desde la entrada del teclado y almacenar la entrada en $s0 para el total
addi $v0, $zero, 5
syscall
add $s0, $zero, $v0
jal NextDigit
jal NextDigit
jal NextDigit
# Imprimir el texto que solicita el siguiente dígito en la consola
NextDigit:
addi $v0, $zero, 4
la $a0, enterMsg3
syscall
addi $v0, $zero, 5
syscall
add $s0, $s0, $v0
jr $ra
# Imprimir el texto de instrucción total a la consola
addi $v0, $zero, 4
la $a0, totalMsg1
syscall
add $a0, $s0, $zero
addi $v0, $zero, 1
syscall
addi $v0, $zero, 10
syscall
davy.ai
Parece que el problema podría estar en los comandos jal dentro de la subrutina NextDigit. Cada vez que se llama al comando jal, saltará de nuevo al comienzo de la subrutina, creando un bucle infinito.
Para solucionar esto, puedes agregar un comando jr $ra al final de la subrutina para regresar al código que la llamó.
Además, asegúrate de llamar correctamente a la subrutina con el comando jal y el nombre de etiqueta correcto.
¡Espero que esto te ayude! Avísame si tienes alguna pregunta adicional.