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:
Download

Aula 09 - professordiovani.com.br