Hallo,
mein Vorschlag:
4 Befehle lösen das Problem
Die Laufzeit ist in beiden Fällen gleich, nämlich 5 Takte
.
.
SBRS r16,7 ; überspringe den nächsten Befehl wenn Bit 7 in R16 = 1 ist
CBI PortB,2 ; Setze PortB Bit 2 auf 0
SBRC r16,7 ; überspringe den nächsten Befehl wenn Bit 7 in R16 = 0 ist
SBI PortB,2 ; Setze Portb Bit 2 auf 1
.
.

Übrigens, der RJMP Befehl benutzt den Stack nicht.
Es ist ein ganz normaler SprungBefehl, nur eben mit
relativer Adressierung. Die Berechnung des relativen
Sprunges übernimmt der Assembler, wenn du eine
absolute Adresse also z.B ein Label als Sprungziel angibst.
Den RJMP-Befehl kannst du also genau wie den "vermissten JMP-Befehl" benutzen.
Die Sprungweite ist allerdings auf +-64 Worte ab PC begrenzt.

Gruß Jan