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
f. LOAD INDIRECT 30

Passo 1

O enunciado pergunta: “O que a instrução LOAD INDIRECT 30 carrega no Acumulador?” As informações dadas sobre a memória são:
  • a palavra 20 contém 40;
  • a palavra 30 contém 50;
  • a palavra 40 contém 60;
  • a palavra 50 contém 70.

Passo 2

Vamos entender bem o que é uma máquina de 1-endereço com Acumulador e o que significa cada modo de endereçamento, porque isso aparece direto em prova.
  • Em uma máquina de 1-endereço com Acumulador, quase todas as instruções operam sobre o Acumulador (ACC): por exemplo, LOAD carrega um valor no ACC, ADD soma ao ACC, etc.
  • Endereçamento direto (normalmente escrito LOAD X) significa: ler da memória no endereço X e colocar esse valor no ACC.
  • Endereçamento indireto (escrito LOAD INDIRECT X ou LOAD ( X)) significa: primeiro ler da memória o conteúdo do endereço X; esse conteúdo é tratado como um endereço efetivo Y; depois ler da memória no endereço Y e colocar esse valor no ACC.
Resumo prático: LOAD INDIRECT X faz duas leituras de memória em cadeia — primeiro em X para obter o ponteiro, depois no ponteiro para obter o dado final.

Passo 3

Para formalizar e ficar claro durante a prova, é útil usar notação. Defina M(a) como o conteúdo da palavra de memória no endereço a. Então:
  • M(20)=40
  • M(30)=50
  • M(40)=60
  • M(50)=70
A instrução LOAD INDIRECT 30 realiza:
  1. Y = M(30) (leitura do ponteiro)
  2. ACC := M(Y) (leitura do dado no endereço Y e carregar no Acumulador)

Passo 4

Execute o passo 1 da instrução: ler o conteúdo da palavra em 30.
Usando os dados fornecidos,
Y = M(30) = 50.
Isso significa que a palavra em 30 contém o endereço 50, que será usado como endereço efetivo.

Passo 5

Execute o passo 2 da instrução: ler o conteúdo da palavra no endereço efetivo Y=50.
Usando os dados fornecidos,
M(Y)=M(50)=70.
Portanto o dado final a ser carregado é 70.

Passo 6

Concluir a ação do LOAD INDIRECT 30: o Acumulador recebe o valor lido em M(50), ou seja,
\text{ACC} := 70.

Passo 7

Dica rápida para a prova (como evitar erro comum): muitos alunos confundem LOAD INDIRECT com LOAD direto ou com LOAD imediato. Para checar rapidamente em prova:
  • Se a instrução fosse LOAD 30, a resposta seria M(30)=50.
  • Se fosse LOAD INDIRECT 30, como aqui, é preciso ainda uma leitura extra: M(M(30))=M(50)=70.
    Sempre verbalize para si mesmo “ler ponteiro depois ler dado” — ajuda a não pular o passo.

Resposta

70

Exercícios relacionados