PDA

View Full Version : problema con semplice prog in assembler helpme :-(


simone.o
03-04-2004, 14:37
Ciao,
ho un problema con un semplice programmino in assembler (processore mips simulato con lo spim).
L'esercizio richiede all'utente di inserire 15 numeri che andranno memorizzati in un vettore di 15 posizioni. Il mio codice è il seguente....non so perchè ma dopo il secondo numero che immetto il programma si blocca...cosa sbaglio?

.data
stringa_input: .asciiz "Inserisci un intero\n"
vettore: .word 0:15 # Riservo 15 word di spazio in memoria per il vettore
.text
.globl main

main:

li $t0, 0 # Imposto a 0 il registro $t0 che contiene l'INDICE DI POSIZIONE DELL'ARRAY
li $t1, 0 # Imposto a 0 il registro $t1 che contiene il NUMERO APPENA INSERITO DALL'UTENTE

chiedi_input: # Dichiaro la funzione che chiede un intero in input fino a che non sono 15

la $a0, stringa_input # Carico in $a0 l'indirizzo di memoria della sringa stringa_input
li $v0, 4 # Carico nel registro $v0 il paramentro 4 per stampare la stringa
syscall

li $v0, 5 # Carico nel registro $v0 il parametro 5 per prendere in input un intero
syscall
move $t1, $v0 # Sposto da $v0 a $t1 il valore appena immesso dall'utente

sw $t1, vettore($t0) # Metto il valore contenuto in $t1 nel vettore alla posizione puntata dall'indice $t0

addi $t0, $t0, 1 # Sommo 1 all'indice del vettore contenuto in $t0
mul $t0, $t0, 4 # Moltiplico per 4 l'indice del vettore per andare alla posizione successiva nell'array

ble $t0, 14, chiedi_input # Salta alla funzione chiedi_input e continua a chiedere un intero finchè $t0 è <= 15

li $v0, 10 # Carico in $v0 il parametro 10 per terminare
syscall