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

Passo 1

Enunciado e dados fornecidos:
  • A memória tem as seguintes palavras (peguei estes dados do enunciado):
    • palavra 20 contém 40.
    • palavra 30 contém 50.
    • palavra 40 contém 60.
    • palavra 50 contém 70.
  • A instrução a executar é: \text{LOAD INDIRECT }20.
    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 M[i] o conteúdo da palavra de memória no endereço i.
  • Denoto por A o conteúdo do Acumulador.
  • Semântica de \text{LOAD INDIRECT }x: isso significa que o processador primeiro lê o conteúdo da palavra x 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:
A := M\bigl(M[x]\bigr).
Em palavras: "carrega no acumulador o conteúdo da memória cujo endereço está armazenado em x".

Passo 3

Aplicando a definição ao nosso caso — primeiro passo: ler o ponteiro armazenado em 20.
Pelo enunciado temos:
M[20]=40.
Isso significa que o endereço intermediário obtido a partir de 20 é 40.

Passo 4

Segundo passo: ler o conteúdo do endereço intermediário 40 e colocar no acumulador.
Pelo enunciado:
M[40]=60.
Usando a regra de \text{LOAD INDIRECT }, temos:
A := M\bigl(M[20]\bigr) = M[40] = 60.

Passo 5

Comparação curta para fixar (dica prática para prova):
  • Se a instrução fosse \text{LOAD }20 (endereço direto), o resultado seria A:=M[20]=40.
  • Como a instrução é \text{LOAD INDIRECT }20, ocorre indireção uma vez e o resultado é A:=M[M[20]]=60.
    Vai ajudar lembrar disso: indirect = “segue o ponteiro” uma vez.

Resposta

60

Exercícios relacionados