Dados os valores de memória abaixo e uma máquina de arquitetura de 1-endereço com Acumulador, que valores as instruções abaixo carregam no Acumulador?
palavra 20 contém 40
palavra 30 contém 50
palavra 40 contém 60
palavra 50 contém 70
e. LOAD DIRECT 30
palavra 20 contém 40
palavra 30 contém 50
palavra 40 contém 60
palavra 50 contém 70
e. LOAD DIRECT 30
Passo 1
O enunciado pede: “Dados os valores de memória abaixo e uma máquina de arquitetura de 1-endereço com Acumulador, que valores as instruções abaixo carregam no Acumulador?” e fornece os dados de memória e a instrução a executar.
Dados fornecidos (peguei estes valores do enunciado):
- palavra
contém . - palavra
contém . - palavra
contém . - palavra
contém .
Instrução a analisar:
Passo 2
O que é uma máquina de “1-endereço com Acumulador”?
- Existe um registrador especial chamado Acumulador, que vou chamar de
. É onde a maioria das operações aritméticas e de carga/armazenamento ocorre. - Instruções desse tipo costumam ter o formato: opcode + campo-endereço. O campo-endereço indica um endereço de memória relacionado à operação.
Explicação dos modos de endereçamento importantes (para entender a diferença):
- Endereçamento direto (“DIRECT”): o número no campo-endereço é o endereço de memória onde está o dado a ser usado. Ex.:
significa: vá à palavra de memória no endereço e carregue seu conteúdo em . - Endereçamento imediato (“IMMEDIATE”): o número no campo-endereço é o próprio valor a ser carregado, não um endereço. Ex.:
colocaria o valor em . - Endereçamento indireto (“INDIRECT”): o campo-endereço aponta para uma palavra de memória que contém outro endereço; o conteúdo é buscado nesse segundo endereço. Ex.: se palavra
contém , então buscaria a palavra no endereço .
Passo 3
Especificamente para
: o passo de execução (modo fetch–execute simplificado) é:
- Ler o campo-endereço da instrução: é
. - Acessar a memória no endereço
. - Copiar o conteúdo da palavra de memória endereço
para o registrador .
Passo 4
Usando os dados do enunciado: a palavra no endereço
contém
. Ou seja, do enunciado pegamos explicitamente que palavra
contém
.
Aplicando isso ao passo de execução: ao executar
a máquina vai ler a palavra em
(que é
) e colocá-la no
. Portanto, após a instrução,
passa a conter
.