Pular para o conteúdo principal

Questão de Programação — Assembly — FGV 2024

ProgramaçãoAssembly
Código
fg085504
Banca
FGV
Órgão
INPE
Ano
2024
Nível
Superior
Cargo
Tecnologista Júnior I - Desenvolvimento de Software Embarcado
Em um trecho de um programa em linguagem assembly para um microcontrolador 8051, foi encontrada a seguinte sequência de instruções:MOV A, #049h MOV B, #05h MUL AB RL A RL A Após o processamento dessas instruções, o valor armazenado no registrador acumulador é
  1. AB4h.
  2. BB5h.
  3. C16Fh.
  4. D1Bh.
  5. E5Bh.
Revelar gabarito e comentário

GabaritoB — B5h.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Programação Assembly para 8051: instruções aritméticas e rotação

Gabarito: letra B. Após as operações de multiplicação e duas rotações à esquerda no acumulador, o valor final é B5h. A sequência correta é: carrega A com 49h, B com 05h, multiplica (resultado 16Dh, com parte baixa 6Dh em A), depois duas rotações RL convertem 6Dh em B5h.

A questão exige conhecimento do funcionamento da instrução MUL AB (que multiplica A e B, colocando parte alta em B e parte baixa em A) e da instrução RL A (rotação circular à esquerda de 8 bits, sem carry).

Passo a passo:

  1. MOV A, #049h → A = 0x49

  2. MOV B, #05h → B = 0x05

  3. MUL AB → A × B = 0x49 × 0x05 = 0x16D (decimal 365). Resultado: B = 0x01 (parte alta), A = 0x6D (parte baixa)

  4. RL A → A = 0x6D = 0110 1101, após rotação esquerda: 1101 1010 = 0xDA

  5. RL A → A = 0xDA = 1101 1010, após rotação: 1011 0101 = 0xB5

Valor final em A = 0xB5 = B5h.

  1. 1MOV A, #049hA = 49h
  2. 2MOV B, #05hB = 05h
  3. 3MUL ABA×B = 16Dh → A=6Dh, B=01h
  4. 4RL A6Dh → DAh
  5. 5RL ADAh → B5h
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

B4h não corresponde ao resultado do cálculo. Seria obtido se houvesse erro na rotação ou na multiplicação.

Alternativa B — ✅ Correta ⟵ GABARITO

Conforme cálculo, após as duas rotações, A = B5h.

Alternativa C — ❌ Incorreta

16Fh é o resultado completo da multiplicação (0x16D) com interpretação errônea – a parte baixa é 6Dh, não 6Fh.

Alternativa D — ❌ Incorreta

1Bh é resultado de uma multiplicação ou rotação diferente (ex.: apenas uma rotação após multiplicação errada).

Alternativa E — ❌ Incorreta

5Bh seria obtido se houvesse apenas uma rotação partindo de valor incorreto.

Gabarito: letra B

Link permanente: /questoes/fg085504