Caricare documenti e articoli online 
INFtub.com è un sito progettato per cercare i documenti in vari tipi di file e il caricamento di articoli online.


 
Non ricordi la password?  ››  Iscriviti gratis
 

Modi d'indirizzamento - Indirizzamento Immediato

informatica



Modi d'indirizzamento


Quando parliamo di modi d'indirizzamento, ci riferiamo a come una locazione di memoria viene indirizzata.

L'8051 dispone dei seguenti modi d'indirizzamnto:

Indirizzamento Immediato

MOV A,#20h

Indirizzamento Diretto

MOV A,30h

Indirizzamento Indiretto

MOV A,@R0



Esterno Diretto

MOVX A,@DPTR

Indiretto a Codice

MOVC A,@A+DPTR

Ognuno di quest 636j98g i modi d'indirizzamento fornisce importanti flessibilita'.

Indirizzamento Immediato

L'Indirizzamento Immediato e' chiamato cosi' perche' il valore da memorizzare risiede immediatamente nel codice operativo nella memoria programma. Cio' significa che l'istruzione contiene in se' stessa il valore da memorizzare.

Per esempio, l'istruzione:

MOV A,#20h

usa l'indirizzamento immediato perche' l'accumulatore sara' caricato con il valore che segue immadiatamente (una costante); in questo caso 20 (esadecimale).

L' indirizzamento immediato e' molto veloce poiche' il valore da caricare e' gia contenuto nell'istruzione stessa. Come inconveniente, pero', il valore e' stabilito al momento della compilazione e questo ne limita la flessibilita'.

Indirizzamento Diretto

L'Indirizzamento Diretto e' chiamato cosi' perche' il valore da memorizzare in memoria e' ottenuto direttamente prendendolo da un'altra locazione di memoria.

Per esempio, l'istruzione:

MOV A, 30h

leggera' il valore contenuto nella locazione di RAM interna all'indirizzo 30 (esadecimale) e lo porra' nell'accumulatore.

L'Indirizzamento Diretto e' generalmente veloce, poiche', anche se il valore da caricare non e' incluso nell'istruzione, esso e' comunque facilmente accessibile, in quanto risiede nella memoria interna dell'8051. Esso e' inoltre molto piu' flessibile dell'Indirizzamento Immediato poiche' il valore da caricare e' contenuto in un determinato indirizzo e quindi puo' essere modificato.

Va inoltre notato che, ogni volta che usate l'indirizzamento diretto con valori compresi da 00h a 7Fh fate riferimento alla Memoria Interna. Mentre se usate indirizzi da 80h a FFh fate riferimento ai registri SFR che servono a controllare i modi operativi del microcontrollore stesso.

A questo punto sorge spontanea la domanda; " Se l'indirizzamento diretto nell'area da 80h a FFh fa riferimento ai registri SFR, come posso indirizzare i 128 byte superiori della RAM interna dell'8052?". La risposta e': Non potete usare l'indirizzamento diretto per far riferimento a quell'area di memoria. Ad ogni modo potete accedere a tale parte di RAM usando il prossimo modo d'indirizzamento: quello indiretto.

Indirizzamento Indiretto

L'indirizzamento Indiretto e' un modo molto potente che in molti casi fornisce un elevato grado di flessibilita'. Esso e' inoltre l'unica maniera per accedere ai 128 byte extra della RAM interna dell'8052.



L'indirizzamento indiretto assume la seguente forma:

MOV A,@R0

Questa istruzione dice all'8051 di analizzare il valore contenuto nel registro R0. In seguito il microcontrollore carichera' nell'accumulatore il valore contenuto nella RAM interna alla locazione il cui indirizzo e' contenuto in R0.

Facciamo un esempio: supponiamo che R0 contenga il valore 40h e la RAM interna all'indirizzo 40h contenga il valore 67h. Al momento dell'esecuzione dell'istruzione, l'8051 va a leggere l'indirizzo della RAM in R0, poi usa tale indirizzo per prendere il valore 67h e lo carica nell'accumulatore.

L'indirizzamento indiretto e' sempre riferito alla RAM interna; non e' mai relativo ad un registro SFR. Qualcuno potrebbe pensare di usare l'indirizzamento indiretto per scrivere sulla porta seriale (SFR 99h) nella seguente maniera:

MOV R0,#99h ;Carica in R0 l'indirizzo della porta seriale
MOV @R0,#01h ;Invia 01h sulla porta seriale... SBAGLIATO!

Questa operazione e' concettualmente non valida. Siccome l'indirizzamento indiretto fa sempre riferimento alla RAM interna, le due istruzioni di sopra, scriveranno 01h all'indirizzo 99h dell'8052. Nel caso di un 8051, le due istruzioni produrranno un risultato indefinito, perche' esso dispone di soli 128 byte.

Esterno Diretto

La Memoria Esterna puo' essere usata con un modo d'indirizzamento chiamato "Esterno Diretto". Il suo nome deriva dal fatto che esso e' simile all'indirizzamento diretto, ma e' usato per accedere alla memoria esterna invece che interna.

Ci sono solo due istruzioni che usano questo modo d'indirizzamento:

MOVX A,@DPTR
MOVX @DPTR,A

Come potete notare, ambedue le istruzioni utilizzano DPTR. In queste istruzioni, il registro DPTR deve essere caricato con l'indirizzo della memoria esterna alla quale si vuole accedere. Una volta che il registro DPTR contiene l'indirizzo corretto, la prima istruzione carichera' il valore della memoria nell'accumulatore, mentre la seconda fara' l'operazione opposta, spostando il valore dell'accumulatore nella memoria esterna.

Esterno Indiretto

La memoria esterna puo' anche essere indirizzata usando una forma di indirizzamento indiretto chiamato "esterno indiretto". Questa forma di indirizzamento e' usualmente utilizzata in progetti relitavemente piccoli che hanno una piccola quantita' di RAM esterna.

Un esempio di tale indirizzamento e' il seguente:

MOVX @R0,A

Ancora una volta, il valore di R0 e' usato come indirizzo di memoria esterna dove caricare il valore dell'accumulatore. Poiche' il valore di @R0 puo' soltanto essere incluso nel range da 00h a FFh, il progetto dovrebbe effettivamente avere una RAM esterna di soli 256 byte. Ci sono degli accorgimenti relativamente semplici implementati in hardware/software per accedere a piu' di 256 byte di memoria esterna usando l'indirizzamento in oggetto, comunque risulta piu' facile usare in questi casi l'indirizzamento Esterno Diretto.







Privacy




Articolo informazione


Hits: 2724
Apprezzato: scheda appunto

Commentare questo articolo:

Non sei registrato
Devi essere registrato per commentare

ISCRIVITI



Copiare il codice

nella pagina web del tuo sito.


Copyright InfTub.com 2024