Hallo Luigi,
mir fehlt ein bisschen die Nennung des Mikrocontrollers, damit ich mal
die ASM-Befehle nachschauen könnte.
Vielleicht gehts aber auch ohne, denn wie die Vorredner schon bemerkt
haben ist wohl dein Stack durcheinander.
Da kommen die deshalb drauf weil die Return-Adresse in vielen
Architekturen direkt auf dem Stack gespeichert wird.
Vereinfacht gesagt heißt dass das der Prozessor an genau die Stelle
springt auf die momentan das Stackpointer-Register drauf zeigt.
Das heißt, exakt da sollte auch die richtige Rücksprungadresse stehen.
PUSH und POP verändern das Stackpointer-Register.
Passt hier also was nicht zusammen springt der Prozessor irgendwo hin
und das wird gerne mit so einer Art Reset beantwortet.
Das ist jetzt recht grob und ungenau, an deiner Stelle würde ich das
Programm im Simulator/Debugger laufen lassen, und genau sehen was
passiert, wie schon rufus schrieb.
Thomas