140 likes | 358 Views
Modos de Endereçamento da família MC8051. By: Ivan Ney Alvizuri Romani UNIP – Verão 2010. Modos de endereçamento das Instruções da família MC8051:. Registrador Direto Indireto Imediato Relativo Absoluto Longo Indexado. Endereçamento por Registrador.
E N D
Modos de Endereçamento da família MC8051 By: Ivan Ney Alvizuri Romani UNIP – Verão 2010
Modos de endereçamento das Instruções da família MC8051: • Registrador • Direto • Indireto • Imediato • Relativo • Absoluto • Longo • Indexado
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
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
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
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.
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.
Endereçamento Relativo • Exemplo:
Endereçamento Absoluto • As instruções ACALL e AJMP utilizam de endereço absoluto. Composição de código:
Endereçamento Absoluto - Essas instruções são de 2 bytes.
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.
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.