Ricerca di token in una stringa di caratteri e memorizzazione dell'indirizzo dei token trovati
Con questo esercizio vogliamo ricercare un determinato token all'interno di una stringa, constatarne la presenza o l'assenza all'interno di essa ed eventualmente scrivere in memoria l'indirizzo in cui il token, che stiamo cercando, è stato registrato. Date le nostre premesse, iniziamo a definire tutto ciò di cui necessitiamo per risolvere il problema. Dunque abbiamo bisogno di:
- Una variabile che contenga il token che dobbiamo ricercare all'interno della stringa.
- Una variabile che contenga il token che fungerà da terminatore della stringa.
- Un array di caratteri su cui effettuare l'operazione.
- Una variabile che contenga gli indirizzi di memoria degli eventuali token trovati.
Traduzione in linguaggio assembler
Questo è ciò che ci occorre tradotto in linguaggio assembler:
- Valore del carattere da memorizzare nella variabile TOKEN, il codice operativo usato è EQU che permette non solo di memorizzare il valore, ma di renderlo anche costante.
TOKEN ':' EQU
TOKEN2 '<' EQU
- Definizione tramite il codice operativo di un array di caratteri
DEFINE CONSTANT STRING 'ab:c:de<' DC.B
- Dichiarazione di spazio non allocato per memorizzare gli indirizzi degli eventuali token trovati all'interno del programma. In questo caso possiamo registrare al più 4 indirizzi.
TOKENA 4 DS.L
START END
Implementazione del codice
Stabiliti gli elementi sui quali agire e con i quali andare ad operare, dobbiamo implementare il codice. L'algoritmo consisterà di tre parti: una prima in cui verranno effettuate tutte le operazioni preliminari (assegnazioni), quindi si passerà alla fase del loop e della ricerca, infine una terza che provvederà all'eventuale memorizzazione dell'indirizzo del token.
Start
Come preannunciato, questa sarà la fase in cui ci si preoccuperà di effettuare tutte le assegnazioni utili al funzionamento del nostro codice. E allora:
START TOKENA, A1 LEA #STRING, A0 MOVEA.L #TOKEN, D0 MOVE.B #TOKEN2, D1 MOVE.B
Tutte le istruzioni provvedono a trasferire gli indirizzi di memoria in cui sono memorizzate le variabili nei rispettivi registri indirizzo. In TOKENA verrà registrato l'indirizzo del token trovato, in STRING vi è la stringa su cui effettuare la ricerca, in TOKEN vi è il carattere da ricercare, infine in TOKEN2 c'è il carattere terminatore della stringa.
Domanda
I primi tre codici operativi sembrano essere diversi tra di loro. Perché ognuno di essi produce un'azione che in sostanza è...