Ciao, sto cercando di realizzare un programma che legga n valori letti da tastiera, e poi ristampi i valori letti utilizzando lo stack pointer, il problema è che riesco a fare il loop di lettura e salvare nello stack ma quando cerco di riaccedere allo stack non trova più i valori salvati precedentemente, posto il codice cosi vedete che è meglio , scusate se ho scritto delle idiozie ma ho appena iniziato con l'assembly. Grazie dell'aiuto !!!
#Programma
.data
str1: .asciiz "Numero di valori da inserire: "
str2: .asciiz "Inserisci x: \n"
output: .asciiz "RISULTATO: "
.text
.globl main
main:
#Lettura del numero di valori da inserire
li $v0, 4
la $a0, str1
syscall
li $v0, 5
syscall
move $s0, $v0 # $s0 numero di valori da inserire
sll $s3, $s0, 2 # $s0 * 4
sub $sp, $sp, $s3 # dealloco lo stack pointer
# Ciclo di lettura dei N numeri interi
loop: li $v0, 4 # $v0 codice della print_string
la $a0, str2 # $a0 indirizzo della stringa
syscall # stampa la stringa prompt
# Lettura dell’intero
li $v0, 5 # $v0 codice della read_int
syscall # legge l’intero e lo carica in $v0
sw $v0, 0($sp) # memorizza valore letto in $sp
addi $sp, $sp, 4
addi $t1, $t1, 1
bne $t1, $s0, loop #loop per l'inserimento dei valori x
#ciclo di stampa dei valori letti precendentemnete
loop_stampa:
li $v0, 4 # $v0 codice della print_string
la $a0, output # $a0 indirizzo della stringa
syscall
li $v0, 1 # $v0 codice della print_integer
lw $a0, 0($sp)
syscall # stampa dell’intero
addi $sp, $sp, 4
add $t2, $t2, 1
bne $t2, $s0, loop_stampa # $t2 = $s0(N valori da inserire)
#fine
add $sp, $sp, $s3
li $v0, 10 # $v0 codice di exit
syscall # esce dal programma