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...

Non riesco però bene a gestire il ritorno della somma. Ho cercato di usare una funzione somma con accesso allo stack.

Grazie in anticipo a chi mi riesce a darmi una mano

.data
	title: .asciz " *** SOMMA DI NUMERI ***\n"
	in_num: .asciz " Quanti numeri vuoi inserire: "
	in_value: .asciz " Inserisci un valore: "
	out_sum: .asciz "\n La somma è: "
	zero_num: .asciz "\n Non hai inserito numeri da sommare\n"
.text
.global _main
_main:
la a0, title
li a7, 4
ecall

start:
	la a0, in_num
	li a7, 4
	ecall
	li a7, 5
	ecall
	mv s3, a0			# Salvo nel registro s3 la quantità di numeri che l'utente vuole inserire
	blez s3, end_loop	# Confronto per verificare che venga inserito un numero > 0
# Blocco per inserire i valori da sommare
	li t0, 1			# Inizializzo il contatore
loop:
	bgt t0, s3, end		
	la a0, in_value
	li a7, 4
	ecall
	li a7, 5
	ecall
	jal function_sum	# Salto alla funzione somma
	addi t0, t0, 1		# Incremento il contatore (i++)
	j loop

# Blocco eseguito se si inserisce un valore <= 0
end_loop:
	la a0, zero_num
	li a7, 4
	ecall
	j start
end:
	
	li a7, 1
	ecall
# *** Fine del programma *** #
li a7, 10
ecall

# *** Funzione Somma *** #
function_sum:
	addi sp, sp,  -8
	sw s0, 0(sp)
	
	addi s0, a0, 0		# Da controllare questa porzione di codice che non esegue la somma
	mv a0, s0
	
	lw s0, 0(sp)
	addi, sp, sp, 8
	ret