| O endereço da próxima instrução é   apontado através do valor armazenado no CI | 
| (contador de instruções). A ação a ser   realizada pela instrucao é determinada pelo | 
| mnemônico da instrução, armazenado no   campo "Código de Operação" OPCODE). | 
| O dado da instrução pode ser um valor   numérico, um caracter ou mesmo um endereço | 
| (no caso de uma instrução de desvio).   A localização do dado é, em geral, explicitamente | 
| indicada na próxima instrução sendo   representada no campo "Operando". | 
| Exemplo de quantidade de Operandos: | 
| a) Instrução com 3 operandos: | 
| ADD A, B, X  ->    (X) <- (A) + (B) | 
| b) Instrução com 2 operandos: | 
| ADD A, B  ->    (A) <- (A) + (B) | 
| c) Instrução com 1 operando: | 
| ADD Op    ->  ACC <- ACC + (Op) | 
| Dentre os diversos modos de   endereçamento, os principais são: | 
|  | 
|           imediato; | 
|  | 
|          direto; | 
|  | 
|           indireto; | 
|  | 
| por registrador (direto ou indireto); | 
|  | 
| indexado; | 
|  | 
| base mais deslocamento | 
| Modo Imediato | 
| O valor do campo operando é o próprio   dado. É usado para trabalhar com valores | 
| constantes. | 
| Vantagem: O operando é obtido em   apenas um acesso. | 
| Desvantagens: | 
| a) O tamanho do dado fica limitado ao   número de bits do operando. | 
| b) Não permite flexibilidade para alterar   dados que variam a cada execução do programa. | 
| Utilização: | 
|  | 
| inicialização de contadores; | 
|  | 
| constantes; | 
|  | 
| armazenamento de ponteiros em   registradores; | 
|  | 
| indicação de quantidade de posições em   operações de deslocamento de bits | 
| (mutiplicação e divisão). | 
| Exemplo: | 
| LDI Op    ->  CI <- Op | 
| Modo Direto | 
| O valor do campo operando indica o   endereço do dado na memória principal. | 
| Vantagens: | 
| a) É aplicado em mais situações que o   modo imediato. | 
| b) Requer apenas uma referência à   memória principal para buscar o dado (além de uma | 
| para buscar a instrução). | 
| Desvantagens: | 
| a) Limitação do endereço da memória   principal que pode ser indicado pelo tamanho do | 
| campo operando. | 
| b) É mais lento que o modo imediato. | 
| Utilização: | 
| Quando o dado varia de valor a cada   execução. | 
| Exemplo: | 
| LDA Op   -> CI <- (Op) | 
| Modo Indireto | 
| O campo operando contém um endereço de   memória cujo conteúdo é o endereço do | 
| dado a ser operado. Há um duplo   endereçamento. O endereço intermediário é chamado | 
| ponteiro ("pointer"). | 
| Vantagens: | 
| a) Permite implementar estruturas de   organização de dados mais complexas e mais | 
| sofisticadas. | 
| b) Elimina a limitação de celulas   endereçáveis. | 
| Desvantagem: | 
| Requer maior quantidade de acessos à   memória principal para completar o ciclo de | 
| execução da instrução, acarretando que   o tempo requerido de execução para a execução | 
| da instrução é maior. | 
| Utilização: | 
| Manutenção de ponteiro de dados. | 
| Exemplo: | 
| LDID Op   -> ACC <- ((Op)) | 
| Endereçamento por Registrador | 
| Este método tem características   semelhantes aos modos direto e indireto, exceto que a | 
| célula de memória referenciada na   instrucao é substituída por um dos registradores da | 
| CPU. Com isso, o endereço mencionado   na instrução passa a ser o de um dos | 
| registradores, e não de uma célula da   memória principal. | 
| Há duas maneiras de empregar o modo de   endereçamento por registrador: | 
|  | 
| modo por registrador   direto: o operando aponta para um registrador, o qual | 
| contém o dado. | 
|  | 
| modo por registrador   indireto: o operando aponta para um registrador, o qual | 
| contém o endereço de memória do dado. | 
| Vantagens: | 
| a) Menor número de bits necessários   para endereçar os registradores. | 
| b) O dado passa a ser armazenado em um   meio (registrador) cujo acesso é muito mais | 
| rápido que o acesso à memória. | 
| c) Economia de bits nas instruções. | 
| Exemplos: | 
| Com registrador:            OPCODE      R1         R2 | 
| 8 bits       4 bits     4 bits | 
| Com células de memória: | 
| OPCODE        Op1         Op2 | 
| 8 bits        16 bits      16 bits | 
| Desvantagens: | 
| a) Não são adequados para a   transferência de variáveis da memória principal para a ULA. | 
| b) Pequeno número de registradores. | 
| Utilização: | 
| Implementação de contadores. | 
| Exemplos: | 
| a) ADD R  -> | 
| (ACC) <- (ACC) + (R)      Soma conteúdo do registrador R ao   conteúdo | 
| do acumulador (direto) | 
| b) ADD M  ->    (ACC) <- (ACC) + ((M))  Soma   conteúdo da posição de memória | 
| indicada pelo registrador M ao   conteúdo do acumulador (indireto) | 
| Modo Indexado | 
| O endereço de cada elemento é obtido   através da soma do campo operando com o | 
| conteúdo de um registrador   (Registrador de Índice). O endereço de cada elemento (por | 
| exemplo, um vetor) é a soma (antes da   colocação do endereço no REM) do valor do | 
| campo operando com o conteúdo de um   registrador, escolhido registrador de índice). | 
| Vantagem: | 
| Rapidez na execução das instruções de   acesso aos dados. | 
| Utilização: | 
| Manipulação de estruturas de dados   mais sofisticadas (vetores). | 
| Exemplo: | 
| LDX Ri, Op  ->     ACC <- ((Op) + (Ri)) | 
| Modo Base mais Deslocamento | 
| Utiliza um registrador (registrador de   base), que contém o endereço base na memória | 
| principal, e um operando, que contém o   deslocamento do dado em relação à base. | 
| Utilização: | 
| Usado para relocação de programas:   define endereço inicial da área do programa e o | 
| endereço da área de dados. | 
| Exemplo: | 
| ADD [BX + DI +   5], DX | 
 
 
