Considerando a instrução ldi r21, k, explique por que a constante k deve ter valor máximo de 0 xFF.

Passo 1

Beleza, vamos lá: o enunciado pergunta “Considerando a instrução ldi r21, k, por que a constante k tem valor máximo de 0xFF?”. A matéria aqui é Arquitetura de Computadores / Linguagem Assembly (no caso, AVR). Para resolver isso a gente vai precisar entender:
  1. como um número é representado em binário (o lance de “bits”);
  2. quantas combinações n bits permitem (aquela de );
  3. como a instrução ldi do AVR é codificada, ou seja, quantos bits ela reserva para o valor imediato k.

Passo 2

Antes de tudo, revisando o básico de teoria de informação:
  • Um bit é um dígito binário que pode valer 0 ou 1.
  • Se você tem 2^n bits, o número total de combinações possíveis é
0,;1,;2,;dots,;2^n - 1
por exemplo, com 3 bits você tem combinações, que em decimal vão de 0 a 7. De modo geral, para representar valores inteiros não negativos, bits te permitem valores de

Passo 3

No conjunto de instruções AVR, o ldi (load immediate) carrega um valor constante direto num registrador de 8 bits (só vale para registradores r16–r31). A codificação da instrução cabe em 16 bits no total, e destes
  • 8 bits são “op‐code” + outros campos de registrador,
  • 8 bits são justamente o campo imediato, ou seja, o espaço reservado para k.
Então, para ldi r21, k, o valor de k cabe em 8 bits.

Passo 4

Como vimos no Passo 2, 8 bits permitem valores entre
0 e 2^8 - 1 = 255
Em hexadecimal, é igual a .

Resposta

A constante precisa caber nos 8 bits reservados na instrução ldi, logo seu valor máximo é .

Exercícios relacionados