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:
  1. 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).
  2. 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.

Exercícios relacionados