Salve a tutti; ho bisogno di un aiuto nel programma che, come da titolo, deve stampare la somma di una serie di interi inseriti dall'utente...
Il programma effettua la somma con i diversi valori inseriti dall'utente...sembra funzionare.
Il mio dubbio è nella funzione somma, alla fine del codice.
A cosa servirebbe l'uso di "sw" ed "lw"?
Il programma funzione ugualmente anche senza di loro; se invece li abilito, s0 restituisce sempre zero e a quel punto non avrei la somma...
Grazie in anticipo a chi mi riesce a darmi una mano
.data
title: .asciz "\n *** SOMMA DI PIU' NUMERI ***"
in_num: .asciz "\n Quanti numeri vuoi inserire: "
num: .asciz " Inserisci un valore: "
sum: .asciz "\n La somma dei numeri inseriti è: "
msg_error: .asciz "\n Il numero inserito non è corretto, riprova! "
.text
.globl _main
_main:
la a0, title
li a7, 4
ecall
# Inserimento dei numeri da sommare
restart:
la a0, in_num
li a7, 4
ecall
li a7, 5
ecall
mv t1, a0
bgtz t1, start # Controllo per costringere all'utente di inserire un numero positivo
# in caso contrario il programma visualizza un messaggio di errore
# e chiede nuovamente di inserire un numero
la a0, msg_error # Massaggio di errore
li a7, 4
ecall
j restart # Torna all'inizio per richiedere un nuovo numero
start:
li t0, 0 # Inizializzo il contatore (i = 0)
li s0, 0 # Inizalizzo la somma t0 = 0
loop:
bge t0, t1, fine # Ciclo per far inserire una serie di valori decisi dall'utente
la a0, num
li a7, 4
ecall
li a7, 5
ecall
jal ra, func_sum # Utilizzo della funzione somma
addi t0, t0, 1
j loop
fine:
# Stampa della somma
la a0, sum
li a7, 4
ecall
mv a0, s0
li a7, 1
ecall
li a7, 10
ecall
# La funzione somma
func_sum:
addi sp, sp, -8
# sw s0, 0(sp) # CODICE NON CHIARO
add s0, s0, a0
# lw s0, 0(sp) # CODICE NON CHIARO
addi sp, sp, 8
ret