Dados os seguintes valores de memória e uma máquina de um endereço com um acumulador, quais valores as instruções a seguir carregam no acumulador?
Palavra 20 contém 40.
Palavra 30 contém 50.
Palavra 40 contém 60.
Palavra 50 contém 70.
CARREGAR IMEDIATO 20
CARREGAR DIRETO 20
CARREGAR INDIRETO 20
CARREGAR IMEDIATO 30
CARREGAR DIRETO 30
CARREGAR INDIRETO 30

Passo 1

O enunciado dá valores de memória e pede para dizer que valor cada instrução carrega no acumulador. Dados fornecidos (copiados do enunciado):
\text{Palavra }20\text{ contém }40é
\text{Palavra }30\text{ contém }50é
\text{Palavra }40\text{ contém }60é
\text{Palavra }50\text{ contém }70é
As instruções para as quais precisamos encontrar o valor carregado no acumulador são, nessa ordem:
\text{CARREGAR IMEDIATO }20
\text{CARREGAR DIRETO }20
\text{CARREGAR INDIRETO }20
\text{CARREGAR IMEDIATO }30
\text{CARREGAR DIRETO }30
\text{CARREGAR INDIRETO }30

Passo 2

Rápida explicação do que é o acumulador e o que significa “carregar” (sem pular etapas):
  • O acumulador (vou chamar de AC) é um registrador da CPU que guarda o valor com o qual as instruções seguintes vão operar.
  • “Carregar” significa colocar um valor no AC. A diferença está em como interpretamos o operando (o número que segue a instrução): ele pode ser um valor literal, um endereço para buscar um valor, ou um endereço que aponta para outro endereço.

Passo 3

Definição e regra do modo imediato (como interpretar a instrução):
  • Em modo imediato, o operando é usado como valor literal. Em notação:
AC \leftarrow \text{operando}
  • Ou seja, se a instrução é \text{CARREGAR IMEDIATO }x, o acumulador recebe exatamente x.
Agora aplico ao primeiro caso:
\text{CARREGAR IMEDIATO }20 \Rightarrow AC \leftarrow 20.

Passo 4

Definição e regra do modo direto (também chamado absoluto):
  • Em modo direto, o operando é um endereço de memória. A regra é:
AC \leftarrow M[\text{operando}]
onde M[a] é o conteúdo da palavra na posição de memória a.
  • Exemplo: se M[20]=40, então \text{CARREGAR DIRETO }20 faz AC \leftarrow 40.
Aplico ao caso:
  • Do enunciado sabemos que M[20]=40. Portanto
\text{CARREGAR DIRETO }20 \Rightarrow AC \leftarrow M[20] = 40.

Passo 5

Definição e regra do modo indireto:
  • Em modo indireto, o operando é um endereço que contém outro endereço; devemos primeiro ler o conteúdo desse endereço (que será um novo endereço) e só então ler a memória naquele novo endereço. A regra é:
AC \leftarrow M[\,M[\text{operando}]\,]
  • Em palavras: leia M[\text{operando}], isso dá um endereço a; então leia M[a] e carregue no AC.
Aplico ao caso com operando 20:
  • Pelo enunciado M[20]=40. Então primeiro passo: a=M[20]=40.
  • Em seguida lemos M[40]. Pelo enunciado M[40]=60.
  • Logo
\text{CARREGAR INDIRETO }20 \Rightarrow AC \leftarrow M[M[20]] = M[40] = 60.

Passo 6

Agora repito os mesmos três modos, mas com o operando 30. Primeiro modo imediato:
\text{CARREGAR IMEDIATO }30 \Rightarrow AC \leftarrow 30.

Passo 7

Modo direto com operando 30:
  • Do enunciado M[30]=50. Então
\text{CARREGAR DIRETO }30 \Rightarrow AC \leftarrow M[30] = 50.

Passo 8

Modo indireto com operando 30:
  • Primeiro M[30]=50, então o endereço apontado é 50.
  • Em seguida lemos M[50]. Pelo enunciado M[50]=70.
  • Assim
\text{CARREGAR INDIRETO }30 \Rightarrow AC \leftarrow M[M[30]] = M[50] = 70.

Resposta

CARREGAR IMEDIATO 20: 20
CARREGAR DIRETO 20: 40
CARREGAR INDIRETO 20: 60
CARREGAR IMEDIATO 30: 30
CARREGAR DIRETO 30: 50
CARREGAR INDIRETO 30: 70

Exercícios relacionados