|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2004
Messaggi: 575
|
problema con semplice prog in assembler helpme :-(
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 |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:49.



















