Salve a tutti.
ho come esercizio da fare il seguente programmino in assembly
Scrivere un programma MIPS che restituisce (visualizzando tale valore sul video) quanti numeri negativi ci sono in un vettore di interi. Si assuma per semplicità che il vettore sia presente in memoria (già inizializzato), che sia identificato dall'etichetta Array e che gli interi siano rappresentati come word; si assuma inoltre che sia anche data la dimensione di Array in una locazione identificata dall'etichetta Dim.
ESEMPIO: se Array è [1,4,-5,0,-6,8,15] (e quindi Dim vale 7), il programma deve restuituire 2.
ho provato a scrivere il seguente codice
.data
array: .word 1,2,3,-1,-2,-3 #vettore
dim: .word 6 #dimensione del vettore
.text
lw $t0, array #carico array in t0
lw $t1, dim #dim in t2
li $t2, 0 #contatore
li $t3, 0 #avanzamento vettore
ciclo:
bge $t3, $t1, fine #salto condizionato
blt array($t3), 0, conta #controlla se il valore corrente è minore di 0 passa a conta
mul $t3, $t3, 4, ciclo #mi avanza il contatore del vettore e va nella locazione succesiva
conta:
addi $t2, $t2, 1 #aggiorna il contatore dei num neg
fine: #syscall della stampa
li $v0, 4
syscall
li $v0, 10
syscall
allora, premetto che penso di aver sbagliato le syscall, mi da però un problema di sintassi al comando
mul $t3, $t3, 4, ciclo
help?