Hallo,

ganz einfach, wenn man mit rjmp springt kann man mit ret nicht zurück
Mit rjmp kann man also nur in eine Richtung springen, um wieder weg zu kommen muss man dann ein zweites mal springen.

Aber dafür gibt es den Befehl rcall, wenn man den benutzt speichert der µC seine momentane Adresse in den Stack und springt zur Subroutine, sobald dann ein ret kommt springt er an die Adresse die er im Stack vorm springen abgelegt hat und ist wieder zurück.

Da du keinen Stack eingerichtet hast und nicht mit Rcall gesprungen bist kommt die Fehlermeldung im Simulator. Rein von den Befehlen und schreibweise her ist alles richtig, deshalb klappt das übersetzen.

Gruß,
Mehto


P.s.: Hab deinen Code mal richtig formatiert. Nächstes mal einfach die "[code]" funktion nutzen