Considerando a instrução ldi r21,
, explique por que a constante
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:- como um número é representado em binário (o lance de “bits”);
- quantas combinações
n
bits permitem (aquela de); - como a instrução
ldi
do AVR é codificada, ou seja, quantos bits ela reserva para o valor imediatok
.
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
bits, o número total de combinações possíveis é
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
Em hexadecimal,
é igual a
.
Resposta
A constante
precisa caber nos 8 bits reservados na instrução .
ldi
, logo seu valor máximo é