#Escriba un programa que lea un numero n por teclado. A continuacion realizara una llamada
#a una subrutina que devuelva la suma de los primeros n numeros enteros. Dicho resultado
#ha de imprimirse por pantalla
.data
cad: .asciiz "Introduzca un numero entero: "
cad2: .asciiz "\nEl resultado es: "
.globl main
.text
main:
li $v0, 4 #Llamada al sistema para imprimir una cadena
la $a0, cad
syscall
li $v0, 5 #Llamada al sistema para leer un nœmero
syscall
move $a0, $v0 #Movemos el nœmero leido a $a0, que es el argumento de la funcion
jal suma #Llamada a la funcion
move $t0, $v0 #Se guarda el resultado en $t0
li $v0, 4 #Llamada al sistema para imprimir cadena
la $a0, cad2
syscall
li $v0, 1 #Imprimimos el resultado
move $a0, $t0
syscall
li $v0, 10 #Fin del main
syscall
#Funci—n suma
suma:
# El nœmero viene en $a0. Sumamos desde 1 hasta el valor de $a0
li $v0, 0 #Inicializamos el resultado
move $t0, $a0 #Inicializamos $t0 con el valor de $a0
bucle:
add $v0, $v0, $t0 # suma = suma + i
addi $t0, $t0, -1
bne $t0, $zero, bucle #Si $t0 llega a 0, acabamos
# El resultado queda en $v0
jr $ra #Fin de la función