Download - Modos de Endereçamento da família MC8051
![Page 1: Modos de Endereçamento da família MC8051](https://reader036.vdocuments.site/reader036/viewer/2022062314/568149a2550346895db6e2ef/html5/thumbnails/1.jpg)
Modos de Endereçamento da família MC8051
By: Ivan Ney Alvizuri Romani
UNIP – Verão 2010
![Page 2: Modos de Endereçamento da família MC8051](https://reader036.vdocuments.site/reader036/viewer/2022062314/568149a2550346895db6e2ef/html5/thumbnails/2.jpg)
Modos de endereçamento das Instruções da família MC8051:
• Registrador
• Direto
• Indireto
• Imediato
• Relativo
• Absoluto
• Longo
• Indexado
![Page 3: Modos de Endereçamento da família MC8051](https://reader036.vdocuments.site/reader036/viewer/2022062314/568149a2550346895db6e2ef/html5/thumbnails/3.jpg)
Endereçamento por Registrador
• As instruções fazem uso dos registradores internos (Rn) do microcontrolador.
Exemplo: add A, R1
Soma o conteúdo do acumulador “A” com o conteúdo do R1, o resultado é armazenado em “A”.
• Este tipo de instrução é codificado em 1 byte
![Page 4: Modos de Endereçamento da família MC8051](https://reader036.vdocuments.site/reader036/viewer/2022062314/568149a2550346895db6e2ef/html5/thumbnails/4.jpg)
Endereçamento Direto
• As instruções fazem uso dos registradores internos pelo seu nemônico o seu endereço absoluto.
Exemplos:
a) mov A, P2 ; move para A o conteúdo do
registrador P2. b) mov A, 20h ; move para A o conteúdo do
registrador interno de endereço 20h.
• Este tipo de instrução é codificado em 2 byte
![Page 5: Modos de Endereçamento da família MC8051](https://reader036.vdocuments.site/reader036/viewer/2022062314/568149a2550346895db6e2ef/html5/thumbnails/5.jpg)
Endereçamento Indireto
• As instruções fazem uso dos registradores R0 ou R1 para se referir a outra posição de memória.
• “@” indica que a operação é de endereço indireto.
• Exemplo - suponha que o endereço 40h contenha o valor 18 e o R0 contenha o valor 40. Logo para a instrução:
mov A, @R0
movo para A o conteúdo da memória apontada por R0 (40h). Assim A é carregado com valor 18 (A=18h).
• Este tipo de instrução é codificado em 1 byte
![Page 6: Modos de Endereçamento da família MC8051](https://reader036.vdocuments.site/reader036/viewer/2022062314/568149a2550346895db6e2ef/html5/thumbnails/6.jpg)
Endereçamento Imediato
• Neste tipo o código de instrução já é codificado junto com uma constante, chamado “dado imediato”.
• O sinal “#” indica um operando de tipo imediato.
Exemplos:
a) mov A, #1Bh ; move para A o valor 1B em
hexadecimal.
b) mov A, #00011111b ; move para A o valor
00011111.
• Este tipo de instrução é codificado em 2 ou 3 bytes.
![Page 7: Modos de Endereçamento da família MC8051](https://reader036.vdocuments.site/reader036/viewer/2022062314/568149a2550346895db6e2ef/html5/thumbnails/7.jpg)
Endereçamento Relativo
• É utilizada em instruções que permitem realizar um “pulo” direto no decorrer do programa.
• O endereço relativo (“offset”) é um dado de 8 bits com sinal.
• O offset especificado na instrução é somado ao conteúdo do PC (contador de programa), obtendo-se assim o endereço efetivo.
• Este tipo de instrução é codificado em 2 bytes.
![Page 8: Modos de Endereçamento da família MC8051](https://reader036.vdocuments.site/reader036/viewer/2022062314/568149a2550346895db6e2ef/html5/thumbnails/8.jpg)
Endereçamento Relativo
• Exemplo:
![Page 9: Modos de Endereçamento da família MC8051](https://reader036.vdocuments.site/reader036/viewer/2022062314/568149a2550346895db6e2ef/html5/thumbnails/9.jpg)
Endereçamento Absoluto
• As instruções ACALL e AJMP utilizam de endereço absoluto. Composição de código:
![Page 10: Modos de Endereçamento da família MC8051](https://reader036.vdocuments.site/reader036/viewer/2022062314/568149a2550346895db6e2ef/html5/thumbnails/10.jpg)
Endereçamento Absoluto
![Page 11: Modos de Endereçamento da família MC8051](https://reader036.vdocuments.site/reader036/viewer/2022062314/568149a2550346895db6e2ef/html5/thumbnails/11.jpg)
Endereçamento Absoluto
- Essas instruções são de 2 bytes.
![Page 12: Modos de Endereçamento da família MC8051](https://reader036.vdocuments.site/reader036/viewer/2022062314/568149a2550346895db6e2ef/html5/thumbnails/12.jpg)
Endereçamento Longo
• As instruções LCALL e LJMP usam este tipo de endereçamento.
• Permitem endereçamento de 16 bits que mapeia todo o espaço disponível de endereços (64kbytes).
• Uma desvantagem destas instruções é que consomem 3 bytes de programa.
![Page 13: Modos de Endereçamento da família MC8051](https://reader036.vdocuments.site/reader036/viewer/2022062314/568149a2550346895db6e2ef/html5/thumbnails/13.jpg)
Endereçamento Indexado• As instruções que usam este tipo
endereçamento são JMP ou MOVC em uma de suas formas.
• O endereço de destino depende não só do endereço inserido na instrução, mas também do valor de A nesse instante.Exemplo:
jmp @ A+DPTR
Salta para a posição dada por (DPTR + A). Aqui A pode ser um contador de passos e o DPTR um ponteiro de faixas.