Che materia stai cercando?

Ricerca di token

Appunti con esercitazione di Calcolatori elettronici I del prof. Canonico sulla ricerca di token: ricerca di token in una stringa di caratteri e memorizzazione dell'indirizzo token trovati, il load effective address, variabili e array di caratteri.

Esame di Calcolatori elettronici I docente Prof. A. Mazzeo

Anteprima

ESTRATTO DOCUMENTO

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.

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

Stabiliti gli elementi sui quali agire e con i quali andare ad operare, dobbiamo implementare il codice. L’algoritmo

consterà 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 verrà registrato l’indirizzo del token trovato, in vi è la stringa su cui effettuare la

TOKENA STRING

ricerca, in vi è il carattere da ricercare, infine in c’è il carattere terminatore della stringa.

TOKEN TOKEN2

Domanda – I primi tre codici operativi sembrano essere diversi tra di loro. Perché ognuno di essi produce

un’azione che in sostanza è uguale a quelle delle altre due?

Il codice operativo è l’acronimo di load effective address, ha la funzione di prelevare l’indirizzo effettivo della

LEA

variabile e di porlo nel registro indirizzi La seconda istruzione carica all’interno del registro indirizzi

TOKENA A1. MOVEA

l’indirizzo di dopo averlo reso costante. I primi due codici operativi, per questo utilizzo, sono totalmente

A0 STRING

equivalenti. Avremmo infatti potuto scrivere indifferentemente:

#TOKENA,A1

MOVEA.L

oppure STRING,A0

LEA

proprio in virtù di questa uguaglianza. Ma anche la terza istruzione ha lo scopo di prendere l’indirizzo di e di

TOKEN

porlo in un registro, la differenza sta nel fatto che i primi due avevano come destinazione un registro indirizzi, questa

istruzione ha come destinazione un registro dati. Dunque nella seconda istruzione occorre usare (move

MOVEA

address), nella terza MOVE.

LOOP

In questo secondo passaggio dobbiamo preoccuparci dello sviluppo del codice che verrà utilizzato per i confronti dei

caratteri e in particolare per il riconoscimento del token. Il primo problema è determinato dal raffronto. Deve avvenire,

infatti, tra i vari elementi della stringa e i due caratteri che abbiamo definito all’inizio, vale a dire i due punti : e il

minore <. Il primo è l’elemento di cui dobbiamo verificare la presenza ed eventualmente l’indirizzo, il secondo è il

terminatore della stringa. Il ragionamento da fare è: prendiamo il primo indirizzo di memoria della stringa e

confrontiamo il primo carattere con il primo token e poi con il secondo. Se è uguale ad uno di questi, si procede con la

fase finale, altrimenti incrementiamo l’indirizzo di memoria della stringa ed effettuiamo un altro confronto.

*compara il contenuto di A0 con il contenuto di D0, quindi incrementa A0

LOOP (A0)+,D0

CMP.B

*se i due elementi sono uguali, passa a FOUND

FOUND

BEQ

*altrimenti compara A0 con D1


PAGINE

2

PESO

44.43 KB

PUBBLICATO

+1 anno fa


DETTAGLI
Corso di laurea: Corso di laurea in ingegneria informatica
SSD:
A.A.: 2013-2014

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher valeria0186 di informazioni apprese con la frequenza delle lezioni di Calcolatori elettronici I e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Napoli Federico II - Unina o del prof Mazzeo Antonino.

Acquista con carta o conto PayPal

Scarica il file tutte le volte che vuoi

Paga con un conto PayPal per usufruire della garanzia Soddisfatto o rimborsato

Recensioni
Ti è piaciuto questo appunto? Valutalo!

Altri appunti di Calcolatori elettronici i

Quaderno appunti presi a lezione con esercizi esame svolti
Appunto
Calcolatori elettronici I - Esercizi sugli Automi
Esercitazione
Calcolatori Elettronici I - Appunti e esercizi
Appunto
Calcolatori elettronici I - analisi
Appunto