PDA

View Full Version : [Assembler] Ordinamento di 1 array


k_mishima
06-01-2007, 16:52
Ciao a tutti, mi sono appena iscritto e ho già 1 problema

In pratica devo confrontare 3 word e scriverle in memoria in ordine crescente, usando 1 array di partenza, e 1 array di arrivo.

Il prof è di quelli che spiegano le cose senza far capire nulla (e tra l'altro lui spiega solo le basi, poi le cose difficili le da a noi), quindi non so come muovermi (basti pensare che gli array non li ha spiegati, come faccio a usarli?).

Devo ragionare come in c? Li' l' esercizio l'ho fatto ordinando a partire dall'ultimo valore dell'array al primo, usando un confronto tra 2 valori e scambiandoli utilizzando una variabile temporanea.

Ma qui è piu' difficile, non so nemmeno se le istruzioni for, if, while esistono o no e come si traducono.

L'assembler è quello del motorola 68k.

Se qualcuno puo' aiutarmi, glie ne sarei grato, se mi risolvesse questo o mi indicasse solo link di esercizi svolti (e magari con commenti) non sarebbe affatto male

Io per ora mi sono avvicinato alla soluzione cosi'

*Programma che ordina (unsigned) 3 elementi
ORG $8000
START MOVE A,D0 *Assegno i valori ai registri
MOVE B,D1
MOVE C,D2
MOVE #0,D4 *Il registro temporaneo
P1 CMP D1,D0
BLO P2 *Salto casomai A<B
MOVE D1,D4 *Scambio tra D1 e D0
MOVE D0,D1
MOVE D4,D0
CLR D4
P2 CMP D2,D1
BLO ALT
MOVE D2,D4
MOVE D1,D2
MOVE D4,D1
CLR D4
P3 CMP D1,D0
BLO ALT
MOVE D1,D4
MOVE D0,D1
MOVE D4,D0
ALT MOVE D0,E
MOVE D1,F
MOVE D2,G
STOP #$8000
ORG $8200

A DC $5
B DC $F
C DC $C
E DS 1
F DS 1
G DS 1
END START

Pero' come vedete non ho usato array e se dovessi ordinare 100 elementi dovrei passare 24 ore a scrivere il programma, perchè non ho saputo usare cicli o function.

k_mishima
09-01-2007, 20:16
nessuno? :muro: