EA-869 - Dúvidas Frequentes
EA-869 - Dúvidas Frequentes
Capítulo IV (06.03.2006)
(Ting - 2s97;
Léo - 1s2006)
Uma instrução pode conter mais de um modo de
endereçamento?
São equivalentes o modo de endereçamento PAGINADO e
o modo de endereçamento BASEADO?
É possível estimar o número de acessos à memória
durante o ciclo de instrução de uma instrução pelo modo de endereçamento
do(s) seu(s) campo(s) de endereço?
Qual é a vantagem de utilizar instruções de desvio com
modo de endereçamento relativo sobre instruções de desvio com modo
de endereçamento absoluto?
Dê um exemplo numérico de modos de endereçamento.
Dê um exemplo de modos de endereçamento de uma
máquina real.
Considerações adicionais para exercícios 2 a 8 do
Capítulo.
Uma instrução pode conter mais de um modo de
endereçamento? (Ting - 2s97)
Sim. O modo de endereçamento define como o conteúdo de
um campo de endereço deve ser interpretado - como deslocamento,
endereço de memória, endereço de registrador ou endereço-base.
Para máquinas de mais de um endereço, ou seja, com mais
de um campo de endereço, pode-se normalmente
especificar distintamente o modo de endereçamento de cada
campo de endereço.
São equivalentes o modo de endereçamento PAGINADO e
o modo de endereçamento BASEADO?
(Ting - 2s97;
Léo - 1s98)
Não, embora ambos os modos de endereçamento interpretem o conteúdo do
campo de endereço como o deslocamento em relação ao conteúdo
de um registrador de base. A diferença básica é que,
no modo de endereçamento PAGINADO, o conteúdo do registrador
de base corresponde ao número de página e ele
é concatenado ao conteúdo do campo de endereço da instrução.
Essa concatenação pode ser implementada através de um
deslocamento (para esquerda) do conteúdo do registrador de
página e uma soma com o conteúdo do campo de endereço. Por outro lado, no modo de endereçamento BASEADO, o registrador base
contém o endereço base que será adicionado ao deslocamento (contido no campo
de endereço da instrução).
É possível estimar o número de acessos à memória
durante o ciclo de instrução de uma instrução pelo modo de endereçamento
do(s) seu(s) campo(s) de endereço? (Ting - 2s97)
Sim. Vimos que um ciclo de instrução compreende o ciclo de
busca, a decodificação e o ciclo de execução. O ciclo de
busca requer um acesso à memória para obter o código de
operação e os modos de endereçamento. O número de acessos
adicionais à memória depende do modo de endereçamento de
cada campo de endereço. Por exemplo, para endereçamento
- (absoluto) direto, pelo menos um acesso adicional
é necessário;
- (absoluto) indireto, pelo menos dois acessos
adicionais são necessários;
- por registrador, nenhum acesso é necessário;
- indireto por registrador, um acesso adicional é
necessário.
Qual é a vantagem de utilizar instruções de desvio com
modo de endereçamento relativo sobre instruções de desvio com modo
de endereçamento absoluto?
(Ting - 2s97)
Os conteúdos dos campos de endereço das instruções com modo
de endereçamento absoluto precisam ser atualizados
cada vez que o programa for carregado em um espaço de memória
distinto; enquanto os conteúdos dos campos
de endereço das instruções com modo de endereçamento relativo
permanecem inalterados pois, neste caso, os endereços efetivos são
calculados em tempo de execução em função do valor corrente do
PC. O programa cuja execução independe do espaço de memória
em que ele é carregado é denominado relocável.
Dê um exemplo numérico de modos de endereçamento. (Ting - 2s97;
alterado por Léo - 1s2006)
Suponhamos os registradores PC, R1, RIX e um espaço de
memória com os seguintes conteúdos:
Após a execução da instruçã
LOAD end armazenada no endereço 200 (observe que a
instrução ocupa duas palavras e contém
três campos - C.O., modo e campo de endereço),
o conteúdo do registrador Acc dependerá do modo
de endereçamento conforme a seguinte tabela.
Modo de Endereçamento |
Endereço Efetivo |
(Acc) |
Absoluto direto |
500 |
700 |
Absoluto indireto |
700 |
350 |
por Registrador R1 (*) |
R1 |
400 |
Indireto por Registrador R1 (*) |
400 |
700 |
Pós-Incremento (com uso de R1)(*) |
400 (e (R1)=401) |
700 |
Pré-Decremento (com uso de R1)(*) |
399 ( e (R1)=399) |
450 |
Imediato |
201 |
500 |
Relativo |
702 |
325 |
Baseado (RIX) |
600 |
900 |
Indexado Direto (RIX) |
600 |
900 |
Indireto Pré-Indexado (RIX) |
900 |
200 |
Indireto Pós-Indexado (RIX) |
800 |
300 |
(*) Notar que nestes casos deixa de ter sentido a 2. palavra da instrução (com conteúdo 500)
Dê um exemplo de modos de endereçamento de uma
máquina real.
(Ting - 2s97;
Léo - 1s98)
Consideremos a família M68000 da Motorola que vocês utilizarão
no curso EA-870 (neste curso será usado o Microcontrolador M68HC11, com
repertório de instruções mais simples do que o aqui apresentado).
Sob o ponto de vista do programador usuário (user programmer),
a família M68000 da Motorola é uma máquina de 2 endereços e
oferece 16 registradores
de 32 bits de uso geral - 8 registradores de dados (D0-D7) e
8 registradores de endereço (A0-A6), 1 contador de programa
de 32 bits e 1 registrador de 8 bits para bits de condição.
Com uso destes registradores são implementados 14 modos de
endereçamento com as seguintes codificações (o formato de instrução
contém um campo de modo e um campo de endereço para cada operando):
Modo de Endereçamento |
Endereço Efetivo |
Código no campo de modo |
Código no campo de endereço |
Endereçamento Direto por Registrador (de Dado) |
EE = Dn |
000 |
endereço do registrador |
Endereçamento Direto por Registrador (de Endereço) |
EE = An |
001 |
endereço do registrador |
Endereçamento Indireto por Registrador (de Endereço) |
EE = (An) |
010 |
endereço do registrador |
Endereçamento com Auto(pós)incremento |
EE = (An); An <- (An)+N; |
011 |
endereço do registrador |
Endereçamento com Auto(pré)decremento |
An <- (An)-N; EE = (An) |
100 |
endereço do registrador |
Endereçamento Baseado |
EE = (An)+d |
101 |
endereço do registrador |
Endereçamento com Registradores de Base e Indexador |
EE = (An)+(RIX)+d |
110 |
endereço do registrador |
Endereçamento Absoluto Direto (Curto) |
EE = (Próxima palavra) |
111 |
000 |
Endereçamento Absoluto Direto (Longo) |
EE = (Próximas duas palavras) |
111 |
001 |
Endereçamento Relativo |
EE = (PC)+d |
111 |
010 |
Endereçamento Relativo Indexado |
EE = (PC)+(RIX)+d |
111 |
011 |
Endereçamento Imediato |
EE = Próxima(s) palavra(s) |
111 |
100 |
Endereçamento Imediato (Rápido) |
EE = Palavra Corrente |
111 |
100 |
Endereçamento Implícito |
EE= PC, por exemplo |
- |
- |
As letras d e N denotam respectivamente o deslocamento
e o número de palavras.
Observe que os registradores de endereço, A0-A7, podem ser utilizados
como apontadores de pilhas, como registradores indexadores RIX ou como
registradores de base; enquanto os registradores de dado só podem
ser utilizados como registradores indexadores RIX.
Note que, apesar do modo de endereçamento imediato rápido
tenha o
mesmo código do modo imediato, a máquina consegue diferenciá-lo pelo
tipo de operandos que a instrução processa. No modo rápido, o tamanho
do operando é 8
bits (tipo Byte) e é codificado na mesma palavra do código de
operação (nenhum acesso adicional à memória é necessário). No outro modo,
o tamanho do operando é 16 bits (tipo Word) ou 32 bits (tipo Long Word) e ele
é colocado nas palavras subsequentes (acessos adicionais à memória
são necessários).
Considerações adicionais para exercícios 2 a 8 do
Capítulo.
(Ting - 2s97)
A máquina suporta ainda as duas seguintes instruções:
- ADD R1,R2 R2 <- (R1)+(R2).
- SHL #opr,R1 deslocar (R1) de opr bits para esquerda.
Atualizado 01/03/2006
Last modified: Fri Oct 10 22:21:13 BRA 1997
Sugestões para leopini@dca.fee.unicamp.br