View Full Version : [Assembly MIPS] Ordinamento di un array
Krusty93
29-01-2014, 17:52
Ciao a tutti
sono alle prese con un progetto per l'università da scrivere in Assembly Mips.
Questo progetto prevede, fra le altre cose, il caricamento di alcune parole in un array e la loro stampa in ordine alfabetico.
Fino alla stampa ci sono, ma non capisco come ordinarlo.
Qualcuno sa aiutarmi? :help:
Nel caso posso allegare traccia e codice già scritto
Grazie
Daniels118
30-01-2014, 09:40
Non ho esperienza con questo particolare assembly, però in linea di massima dovresti fare così:
Prima di tutto crei una funzione per confrontare due stringhe, che ti restituirà due possibili codici, diciamo zero se la prima stringa è uguale o minore della seconda, uno in caso contrario.
E' costituita da un loop che scorre i caratteri delle due stringhe, chiamiamoli A e B.
All'interno del loop:
1) se A vale zero (prima stringa più corta), ritorni dalla funzione con codice zero;
2) se B vale zero (seconda stringa più corta), ritorni dalla funzione con codice uno;
3) fai la differenza con segno tra A e B; se il risultato è maggiore di zero ritorni dalla funzione con codice uno.
Poi devi fare la funzione di scambio delle stringhe. Se il tuo array contiene dei puntatori alle stringhe, sarà molto semplice:
dati gli indirizzi degli elementi dell'array (non i valori, che sono i puntatori alle stringhe), A e B:
T=*A
A=*B
*B=T
Se invece hai un array di array si applica lo stesso ragionamento, ma dovrai copiare le stringhe intere invece dei puntatori; puoi scambiare un carattere alla volta copiando anche quelli che vanno oltre la fine della stringa, oppure utilizzare un array d'appoggio.
A questo punto scegli l'algoritmo di ordinamento, per esempio il bubble sort; con le due funzioni appena create dovrebbe essere semplice implementarlo.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.