Qual a vantagem de usar a instrução RJMP no lugar de JMP?
Passo 1
Beleza, então vamos lá: o enunciado pergunta qual é a vantagem de usar a instrução RJMP em vez de JMP numa CPU AVR (Microcontrolador). O assunto é instruções de desvio (branching) em linguagem assembly AVR – mais especificamente, as diferenças entre salto relativo (RJMP) e salto absoluto (JMP). Pra resolver isso, a gente vai precisar entender como funciona o contador de programa (PC), o tamanho e o tempo de execução de cada instrução, e o alcance de cada uma.
Passo 2
Primeiro, vamos definir as duas instruções:
- JMP (JuMP): faz um salto absoluto para qualquer endereço de 16 bits na memória de programa;
- RJMP (Relative JuMP): faz um salto relativo em relação à posição atual do PC, com deslocamento de -2048 a +2047 palavras (cada palavra = 2 bytes).
Passo 3
Agora comparar tamanho e tempo de execução:
- Tamanho em bytes
- JMP ocupa 4 bytes de memória de programa (porque armazena o endereço completo de 16 bits).
- RJMP ocupa 2 bytes (só precisa do deslocamento de 12 bits).
- Ciclos de máquina
- JMP leva 3 ciclos de máquina para executar.
- RJMP leva 2 ciclos de máquina para executar.
Passo 4
Entendendo por que isso importa:
- Menos bytes significa mais espaço livre na memória de programa, ou seja, você consegue colocar mais código ou usar um chip menor.
- Menos ciclos significa resposta mais rápida, ou seja, seu microcontrolador ganha em desempenho.
Resposta
A vantagem de usar RJMP no lugar de JMP é que ele ocupa metade do espaço em memória (2 bytes em vez de 4) e executa mais rápido (2 ciclos em vez de 3), desde que o destino do salto esteja dentro do alcance relativo permitido.