Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
* * * Clique para editar o estilo do título mestre Clique para editar o estilo do subtítulo mestre Arquitetura e organização de computadores Endereçamento de memória. Aula 04 Prof. Diovani Milhorim * * * Endereçamento de memória Interpretação de endereços de memória * * * Endereçamento de memória Interpretação de endereços de memória Ordem dos bytes * * * Endereçamento de memória Interpretação de endereços de memória Modos de endereçamento * * * Endereçamento de memória Modos de endereçamento Modo registrador * * * Endereçamento de memória Modos de endereçamento Modo registrador * * * Endereçamento de memória Modos de endereçamento Modo 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 um endereço de memória (ponteiro) para o dado. * * * Endereçamento de memória Modos de endereçamento Modo registrador Vantagens 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). Desvantagem Pequeno número de registradores - se forem muitos os dados endereçados por registrador, os registradores disponíveis podem não ser suficientes. * * * Endereçamento de memória Modos de endereçamento Modo registrador 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) * * * Endereçamento de memória Modos de endereçamento Modo registrador Exemplos Os exemplos usam instruções do Intel 8080: DCR r (decrement register) ==> (r) <--- (r) - 1 - decrementa o conteúdo do registrador r (endereçamento por registrador, direto) MOV r1, r2 (move register) ==> (r1) <--- (r2) - o conteúdo do registrador r2 é copiado para o registrador r1 (endereçamento por registrador, direto). MOV M, r (move to memory) ==> ((M)) <--- (r) - o conteúdo do registrador r é copiado para a posição de memória cujo endereço está no registrador M (endereçamento por registrador, indireto). * * * Endereçamento de memória Modos de endereçamento Modo Imediato * * * Endereçamento de memória Modos de endereçamento MODO IMEDIATO O valor do campo operando é o próprio dado. É usado para trabalhar com valores constantes. O operando é dito operando imediato (o operando é o próprio valor a ser operado, ou seja, é o próprio dado a ser processado). * * * Endereçamento de memória Modos de endereçamento MODO IMEDIATO Vantagem O operando é obtido durante o ciclo de busca, em apenas 1 acesso. Não é necessário fazer nenhum acesso à MP no ciclo de execução, acarretando maior rapidez na execução. * * * Endereçamento de memória Modos de endereçamento MODO IMEDIATO Desvantagens a) Este modo de endereçamento não permite flexibilidade para alterar dados que variam a cada execução do programa, portanto não é adequado para variáveis repetidamente operadas com diferentes valores a cada execução do programa. b) O tamanho do dado fica limitado ao número de bits do operando (campo operando da instrução). A limitação de tamanho do campo operando reduz o valor máximo do dado que pode ser armazenado. * * * Endereçamento de memória Modos de endereçamento MODO IMEDIATO No Intel 8080, o campo Operando tem 8 bits, portanto o maior valor deste campo será limitado a 28 = 256. Existem instruções que permitem carregar doublewords, isto é, palavras duplas que ocupam 2 células de memória, em que o maior valor será limitado a 216 = 65.536 (64 k). * * * Endereçamento de memória Modos de endereçamento MODO IMEDIATO 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 (multiplicação e divisão) Exemplos Obs.: Instruções do Intel 8080. LDI Op ==> ACC <--- Op = carrega o valor (hexadecimal) do operando no acumulador. LDI 50 (load immediate) ==> ACC <---- 50 (carrega o valor hexadecimal 50 no acumulador) * * * Endereçamento de memória Modos de endereçamento Modo Direto ou Absoluto * * * Endereçamento de memória Modos de endereçamento Modo Direto ou Absoluto * * * Endereçamento de memória Modos de endereçamento Modo Direto ou Absoluto Vantagens a) É aplicado em mais situações que o modo imediato; b) Requer apenas uma referência à memória para busca do dado (além de uma para a busca da instrução), sendo mais rápido que o modo indireto. Desvantagens a) Limitação do endereço da MP que pode ser indicado pelo tamanho do campo operando. b) É mais lento que o modo imediato. Utillização Quando o dado varia de valor a cada execução * * * Endereçamento de memória Modos de endereçamento Modo Direto ou Absoluto Exemplos de Instruções do Intel 8080: LDA Op (”load accumulator”), sendo Op um endereço na memória ==> ACC <--- (Op) (carrega o conteúdo da posição de memória indicada pelo operando no acumulador). LDA 978A ===> ACC <--- (978A) = carrega no acumulador o conteúdo da posição de memória 978A. * * * Endereçamento de memória Modos de endereçamento Modo Direto ou Absoluto Exemplos de Instruções do Intel 8080: JMP Op ("jump") ==> CI <--- (Op) JMP 1000H ==> CI<--- (1000H) = causa um desvio para o endereço contido nas posições 1000 e 1001 (hexadecimal) da memória, carregando o conteúdo das posições 1000 e 1001H no CI Obs: como no processador 8080 o C I contém 16 bits (um endereço), serão necessárias DUAS células de memória (uma célula contém 8 bits), o que requer dois ciclos de busca à memória. * * * Endereçamento de memória Modos de endereçamento Modo Direto ou Absoluto Exemplos de Instruções do Intel 8080: MOV R, Op ==> R <--- (Op) MOV B, 7AC1 ==> B <--- (7AC1), move o conteúdo da posição de memória (8 bits) indicada pelo operando - 7AC1 - para o registrador B (8 bits). * * * Endereçamento de memória Modos de endereçamento Modo indireto de memória * * * Endereçamento de memória Modos de endereçamento Modo indireto de memória * * * Endereçamento de memória Modos de endereçamento Modo indireto de memória Exemplo: LDID Op ==> ACC <--- ((Op)) São necessários 3 ou mais acessos à memória: 1 para buscar o opcode, 1 (ou 2, quando for uma referência à memória) para buscar o operando (Op) e mais 1 para buscar o dado ((Op)) propriamente dito (ou 2, quando o dado for um endereço de memória; por exemplo, quando for uma instrução de desvio). * * * Endereçamento de memória Modos de endereçamento Modo indireto de memória Vantagem a) Permite implementar estruturas de organização de dados mais complexas, mais sofisticadas. b) Elimina a limitação de células endereçáveis. Desvantagem Requer maior quantidade de acessos à MP para completar o ciclo de execução da instrução, acarretando que o tempo requerido para a execução da instrução é maior. Obs.1: É possível haver várias indireções. Em algumas máquinas, existe 1 bit que sinaliza no caso de existirem várias Indireções. Enquanto este bit for 0, continua com as indireções, até encontrá-lo ligado. * * * Endereçamento de memória Modos de endereçamento Modo indireto de memória Utilização Manutenção de ponteiro de dados Exemplo: Relação de dados a serem movimentados para novas posições de memória (por exemplo, elementos de vetores), basta modificar o valor da célula endereçada pela instrução (não é necessário mudar o valor do operando). * * * Endereçamento de memória Modos de endereçamento Modo indireto registrador * * * Endereçamento de memória Modos de endereçamento Modo indireto registrador * * * Endereçamento de memória Modos de endereçamento Modo indireto registrador Vantagens 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). 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 * * * Endereçamento de memória Modos de endereçamento Modo indireto registrador Utilização Implementação de contadores. Exemplo de uso: vetor E(1) ... E (100) Ri contém E ( i ) para incrementar e percorrer o vetor Obs.: No Intel 8080, a identificação do registrador envolvido na operação faz parte do próprio opcode. * * * Endereçamento de memória Modos de endereçamento Modo indireto registrador 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) * * * Endereçamento de memória Modos de endereçamento Modo indireto registrador Exemplos DCR r (decrement register) ==> (r) <--- (r) - 1 - decrementa o conteúdo do registrador r (endereçamento por registrador, direto) MOV r1, r2 (move register) ==> (r1) <--- (r2) - o conteúdo do registrador r2 é copiado para o registrador r1 (endereçamento por registrador, direto). MOV M, r (move to memory) ==> ((M)) <--- (r) - o conteúdo do registrador r é copiado para a posição de memória cujo endereço está no registrador M (endereçamento por registrador, indireto). * * * Endereçamento de memória Modos de endereçamento Modo deslocamento * * * Endereçamento de memória Modos de endereçamento Modo deslocamento * * * Endereçamento de memória Modos de endereçamento Modo deslocamento Utiliza um registrador chamado Registrador de Base, que contém o endereço base na MP 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 inicial da área de dados (pode ser utilizado um registrador para endereços e um para dados) Nota: Os microprocessadores Intel (após 8086/8) usam registradores específicos como registradores-base. Estes Registradores de Base são utilizados para implementar o endereçamento de memória e a segmentação da memória em páginas de 64 kbytes. * * * Endereçamento de memória Modos de endereçamento Modo indexado * * * Endereçamento de memória Modos de endereçamento 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, de 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 como registrador índice). Vantagem Rapidez na execução das instruções de acesso aos dados (a alteração dos endereços é realizada na UCP. Utilização Manipulação de estruturas de dados mais sofisticadas (vetores). * * * Endereçamento de memória Modos de endereçamento Modo indexado Vantagem Rapidez na execução das instruções de acesso aos dados (a alteração dos endereços é realizada na UCP. Utilização Manipulação de estruturas de dados mais sofisticadas (vetores). * * * Endereçamento de memória Modos de endereçamento Modo indexado Obs.: O Intel 8080 não possui nenhuma instrução com modo de endereçamento indexado, o qual somente foi introduzido na família Intel a partir do 8086. Exemplos LDX Ri, Op ==> ACC <--- ((Op) + (Ri)) ADX Ri, Op ==> ACC <--- ACC + ((Op) + (Ri)) * * * Endereçamento de memória Modos de endereçamento Modo auto incremento * * * Endereçamento de memória Modos de endereçamento Modo auto decremento * * * Endereçamento de memória Modos de endereçamento Modo escalonado * * * Endereçamento de memória Modos de endereçamento IDENTIFICAÇÃO DO MODO DE ENDEREÇAMENTO DA INSTRUÇÃO O Código de Operação identifica o modo de endereçamento, através de seu mnemônico e do correspondente código binário. Determinados bits no opcode podem indicar o modo de endereçamento ou a instrução pode possuir um campo específico para indicar o modo de endereçamento, através de códigos em bits. O registrador utilizado no endereçamento também pode ser indicado por bits determinados no opcode. * * * Endereçamento de memória Modos de endereçamento Efeitos de Temporização dos Modos de Endereçamento O modo de endereçamento afeta o tempo requerido para executar uma instrução e a memória requerida para seu armazenamento Instruções que usam endereçamento implícito ou por registrador são executadas muito rápido, pois trabalham direto com o hardware do processador e seus registradores. A instrução toda pode ser buscada (“fetched”) em um único ciclo de busca (um único acesso à memória). O número de acessos à memória é o mais importante fator no consumo de tempo de execução da instrução. * * * Endereçamento de memória Modos de endereçamento Exercício: Qual será o valor carregado no acumulador quando forem executadas as seguintes instruções: LDI Op ==> (ACC) <--- Op (modo de endereçamento Imediato) LDA Op ==> (ACC) <--- (Op) (modo de endereçamento direto) LDID Op ==> (ACC) <--- ((Op)) (modo de endereçamento Indireto) LDR Op ==> (ACC) <--- (R) (modo de endereçamento Direto por Registrador) LDIR Op ==> (ACC) <--- ((R)) (modo de endereçamento Indireto por Registrador) LDX Op ==> (ACC) <--- ((Ri) + (Op)) (modo de endereçamento Indexado) LDB Op ==> (ACC) <--- ((Rb) + (Op)) (modo de endereçamento Base + Deslocamento) * * * Endereçamento de memória Modos de endereçamento Exercício: * * * Endereçamento de memória Modos de endereçamento Exercício:
Compartilhar