"piccolo errore" esercizio 86k Asim

di il
1 risposte

"piccolo errore" esercizio 86k Asim

Salve
sono un nuovo membro del gruppo, vi chiedo aiuto in merito ad un esercizio d'esame a poche ore dal prossimo appello.
Spero che possiate aiutarmi:
testo esame: sviluppare programma per rendere nulli tutti gli elementi del vett1 nelle posizioni in cui sono nulli gli elementi del vett2

Ho scritto il programma, gira, soltanto che mi sostituisce con zero il VALORE SUCCESSIVO alla posizione quale dovrebbe
es. vett1 3,5,4,7
vett2 1,2,0,15 in questo caso il numero 4 andrebbe sostituito con 0...invece mi sostituisce il 7 successivo con lo zero.

Spero in un vostro aiuto.
ps. Ho attribuito l'errore all'incremento sulla linea 13..il problema è che non riuscirei a farne a meno..grazie

ORG $8000


vett1 dc.w 3,5,1,3,6,9,3,7,17,16 *Vett A
vett2 dc.w 1,2,0,15,0,36,0,3,0,12 *Vett B
dim dc.w 10

ORG $8200
SOTTOP movea.l 10(sp),a0 *vett1 *Prendo parametri dallo STACK
movea.l 6(sp),a1 *vett2
move.w 4(sp),d0 *dim

LOOP
clr.w d2
clr.w d3
add.w #-1,d0
move (a0)+,d2
move (a1)+,d3
cmp.w #0,d3
BNE salto
move.w #0,(a0)+
salto cmp.w #0,d0
BNE LOOP
ENDF rts


START move.l #vett1,-(sp) *Passo parametri nello STACK
move.l #vett2,-(sp)
move.w dim,-(sp)
jsr SOTTOP

FINE end START

1 Risposte

  • Re: "piccolo errore" esercizio 86k Asim

    Dopo 4 ore insistenti ho risolto...al posto di cancellare il POST scrivo la correzione trovata
    magari puo essere utile a qualcuno alle prime armi come me.

    scrivo solo il loop

    LOOP clr.w d2
    clr.w d3
    add.w #-1,d0
    move (a0)+,d2
    move (a1)+,d3
    cmp.w #0,d3
    BNE salto
    move.w #0,-(a0)
    adda.l #2,a0 * Aggiungo 2 perchè prima ho una word..4 per una longword
    salto cmp.w #0,d0
    BNE LOOP
Devi accedere o registrarti per scrivere nel forum
1 risposte