I need help with my assembler exercise

0

How can I make this code go through the whole loop without having to implement it one by one? For now what I have is this, the variable 7 would have to be stored inside an array and it has to have a loop that adds them all, going through the memory spaces, I do not know how I can do the loop.

data
msg:    .asciiz "El resultado es "              # Cadena para imprimir
msg1:   .asciiz "Introduzca el primer numero: "     # Cadena para pedir el primer numero
msg2:   .asciiz "Introduzco el segundo numero: "    # Cadena para pedir el segundo numero

stack:  .word   0
var_1:  .word   1                      # Variable inicializada a 1
var_2:  .word   2                      # Variable inicializada a 2
var_3:  .word   3                      # Variable inicializada a 3
var_4:  .word   4                      # Variable inicializada a 4
var_5:  .word   5                      # Variable inicializada a 5
var_6:  .word   6                      # Variable inicializada a 6
var_7:  .word   7                      # Variable inicializada a 7



.text
# Procedimiento principal
main:   
        addi    $sp, $sp, -32    # Hace espacio en la pila
        sw      $ra, 0($sp)     # Almacena $ra en la pila
        la  $s0, stack
        lw      $t1, 4($s0)      # Carga var_a en $t1
        lw      $t2, 8($s0)      # Carga var_b en $t2
        lw      $t3, 12($s0)      # Carga var_b en $t3
        lw      $t4, 16($s0)      # Carga var_b en $t4
        lw      $t5, 20($s0)      # Carga var_b en $t5
        lw      $t6, 24($s0)      # Carga var_b en $t6
        lw      $t7, 28($s0)      # Carga var_b en $t7  


        add     $a0, $t1, $t2    # Suma,  resultado en $a0 para print_resultado

        jal     print_resultado # Llama a print_resultado
        li      $v0,10          # Código de la llamada al sistema "exit" en $v0
        syscall                 # Termina el programa
        lw      $ra, 0($sp)     # Recupera el valor de $ra de la pila
        addi    $sp, $sp, 32     # Devuelve el espacio de pila usado
        jr      $ra

# Procedimiento para imprimir un mensaje con el resultado. Imprime la
# cadena msg seguida del valor que se le pasa como primer argumento (en $a0)
print_resultado:
        move    $t0, $a0        # Guarda en $t0 el valor a imprimir
        la      $a0, msg        # Pone en $a0 la dirección de la cadena
        li      $v0, 4          # Código syscall para imprimir una cadena
        syscall                 # Imprime la cadena
        move    $a0, $t0        # Pone en $a0 el entero a imprimir
        li      $v0, 1          # Código syscall para imprimir un entero
        syscall                 # Imprime el entero
        jr      $ra             # Vuelve al procedimiento invocador
    
asked by El Barto 15.04.2018 в 11:40
source

0 answers