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
c. LOAD INDIRECT 20
palavra 20 contém 40
palavra 30 contém 50
palavra 40 contém 60
palavra 50 contém 70
c. LOAD INDIRECT 20
Passo 1
Enunciado e dados fornecidos:
- A memória tem as seguintes palavras (peguei estes dados do enunciado):
- palavra
contém . - palavra
contém . - palavra
contém . - palavra
contém .
- palavra
- A instrução a executar é:
.
Pergunta: qual valor essa instrução coloca no Acumulador?
Passo 2
Definições e notação (para ficar claro o que vamos manipular):
- Denoto por
o conteúdo da palavra de memória no endereço . - Denoto por
o conteúdo do Acumulador. - Semântica de
: isso significa que o processador primeiro lê o conteúdo da palavra para obter um endereço intermediário, e então lê a memória nesse endereço intermediário e carrega esse valor no Acumulador. Em forma matemática:
Em palavras: "carrega no acumulador o conteúdo da memória cujo endereço está armazenado em
".
Passo 3
Aplicando a definição ao nosso caso — primeiro passo: ler o ponteiro armazenado em
.
Pelo enunciado temos:
Pelo enunciado temos:
Isso significa que o endereço intermediário obtido a partir de
é
.
Passo 4
Segundo passo: ler o conteúdo do endereço intermediário
e colocar no acumulador.
Pelo enunciado:
Pelo enunciado:
Usando a regra de
, temos:
Passo 5
Comparação curta para fixar (dica prática para prova):
- Se a instrução fosse
(endereço direto), o resultado seria . - Como a instrução é
, ocorre indireção uma vez e o resultado é .
Vai ajudar lembrar disso: indirect = “segue o ponteiro” uma vez.