Hallo,
der Assembler Befehl PUSH <Register> legt den Inhalt des Registers
auf dem Stack ab. (Stichwort: LIFO)
Der POP <Register> Befehl tut genau das Gegenteil, er lädt
den obersten Wert vom Stack in das Register.
Der Hauptzeck dieser Befehle ist das temporäre "Retten" von Registerinhalten,
weil der Inhalt später noch gebraucht wird.
In deinem Codebeispiel wird der Inhalt von R16 mit PUSH R16 auf den Stack gerettet.
Dann wird R16 mit dem Wert $FF geladen um dies nach DDRB auszugeben.
Anschliessend wird mit POP R16 der alte Wert von R16 wiederhergestellt.
Gruß Jan
Lesezeichen