Trabalhos
O operando vem da (ou vai para) memória;
O registrador não armazena o dado, mas indica o endereço do dado na memória (funciona como um apontador).
Vantagens
Consegue referenciar a memória consumindo poucos bits (pois utiliza registradores)
Permite que a mesma instrução (dentro de um loop, por exemplo), atue sobre endereços de memória distintos (o que não é possível no end. direto).
Maior velocidade / rapidez de execução - o acesso ao registrador é muito mais rápido que o acesso à memória.
Economia de espaço de armazenamento de instrução (o tamanho da instrução é menor porque como são poucos registradores, são menos bits para seus endereços).
Exemplo (somar os 1024 inteiros de 4 bytes do vetor V):
Desvantagem
Não são adequados para transferência de variáveis da MP para ULA.
Pequeno número de registradores - se forem muitos os dados endereçados por registrador, os registradores disponíveis podem não ser suficientes
Utilização
Implementação de contadores.
Obs.: No Intel 8080, a identificação do registrador envolvido na operação faz parte do próprio opcode.
Exemplos
Os exemplos usam instruções do Intel 8080:
ADD r (add register) ==> (ACC) <--- (ACC) + (r) - soma o conteúdo do registrador r ao conteúdo do acumulador (endereçamento por registrador, direto)
ADD M (add memory) ==> (ACC) <--- (ACC) + ((M)) - soma o conteúdo da posição de memória indicada pelo registrador M ao conteúdo do acumulador (endereçamento por registrador, indireto) INR M (increment memory) ==> ((M)) <--- ((M)) + 1 - incrementa o conteúdo da posição de memória indicada pelo registrador M (endereçamento por registrador, indireto)