Scorrere un vettore

di il
2 risposte

Scorrere un vettore

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?

2 Risposte

  • Re: Scorrere un vettore

    L'errore sta :
    quando vai conta ti dimentichi di tornare al ciclo cosi il programma termina prima che tu abbia finito di controllare il vettore.
    spero di esserti stato di aiuto
    saluti smalldragon
  • Re: Scorrere un vettore

    L'errore in questa istruzione mul $t3, $t3, 4, ciclo
    se ricordo bene l'assembler mips
    sta nel fatto che la mul accetta 3 parametri e non 4 essendo una istruzione matematica.
    dovresti usare l'equivalente mips della jmp del 8086

    spero di esserti stato di aiuto
    saluti smalldragon
Devi accedere o registrarti per scrivere nel forum
2 risposte