Modi di indirizzamento
Come si apprende già dalla definizione, un algoritmo è una sequenza di passi che porta alla risoluzione di una classe di problemi. Un algoritmo in generale è trasformato in una sequenza di istruzioni, che costituiscono il vero e proprio programma. Ogni programma che si rispetti opera su dei dati e solitamente questi sono registrati in precise zone della memoria, sia essa memoria centrale o di massa.
In particolare quando parliamo del processore ci si riferisce o ai registri di memoria, o alla memoria in generale, volendo intendere con il primo termine, spazi di memoria che sono interni al processore, con il secondo, spazi di memoria che non si trovano all’interno del processore. Dunque se un programma lavora su dati conservati in memoria, significa che il programma deve avere accesso ad essi e i modi di indirizzamento indicano come la CPU accede agli operandi utilizzati nelle istruzioni del programma, scritti in registri interni o in memoria ed hanno la funzione di fornire un indirizzo effettivo per l’operando di un’istruzione.
Tipi di indirizzamento
I modi di indirizzamento sono molteplici, in particolare quelli messi a disposizione dal 68000 e ai quali daremo un’occhiata sono:
- Indirizzamento immediato
- Indirizzamento diretto
- Indirizzamento assoluto
- Indirizzamento indiretto
- Predecremento e postincremento
- Indirizzamento con base
Indirizzamento immediato (Immediate Addressing)
L’indirizzamento immediato si ha quando all’interno di un’istruzione si opera con una costante numerica. È facile riconoscere questo tipo di indirizzamento, in quanto all’interno del codice la costante è preceduta dal simbolo # (cancelletto). Questo tipo di indirizzamento è utilizzato unicamente per gli operandi di tipo sorgente. I numeri vengono automaticamente convertiti da decimale in esadecimale nella fase di memorizzazione. Per specificare una costante direttamente in esadecimale basta aggiungere il simbolo $ davanti alla costante.
Esempio #12,D0
MOVE.W #12, D0
Questa istruzione ha dunque come effetto quello di muovere il valore 12, ponendolo all’interno del registro D0, memorizzandone il valore mediante la numerazione esadecimale.
#{$}12,D0
MOVE.W #{$}12, D0
Questa operazione MOVE ha lo stesso effetto della precedente, la differenza sta nel fatto che in questo caso la costante viene espressa direttamente mediante la numerazione esadecimale e pertanto nella fase di memorizzazione non necessita di essere convertita.
Indirizzamento diretto (Direct Addressing)
L’indirizzamento diretto avviene quando la sorgente e la destinazione di un operando sono ambo registri. Se il registro funge da sorgente allora il contenuto di questo registro fornisce l’operando sorgente, se invece...
-
Calcolatori elettronici
-
Calcolatori elettronici - Appunti teoria
-
Appunti Calcolatori elettronici I
-
Appunti Calcolatori Elettronici