Einführung
Der Stack dient als Gedächtnis für Ergebnisse oder Teilergebnisse, falls kurzzeitig andere Aufgaben erledigt werden müssen. Außerdem wird der Stack verwendet, um die Rücksprungadresse bei der Ausführung von Unterprogrammen zu sichern. Dieser liegt im iData-Bereich (Speicheraufbau) und wird über den Stackpointer (SP) adressiert. Angegeben wird eine Adresse im internen RAM (dadr/8Bit).
Anwendung
Eigentlich existieren nur 2 Befehle um mit dem Stack zu arbeiten:
- Push: Der Wert der angegeben Adresse wird auf dem Stack abgelegt.
- Pop: Der oberste Wert auf dem Stack wird in der angegebenen Adresse geladen und vom Stack entfernt
Beispiel: Speichere den Wert der Adresse 0x20 auf dem Stack
push 0x20
Beispiel: Hole den obersten Wert vom Stack und speichere ihn in der Adresse 0x21
pop 0x21
Quelltext-Beispiel
Aufgabe
Tausche den Wert der Adressen 0x20 bis 0x22 so, dass
- 0x20 den Wert von 0x22 enthält
- 0x21 den Wert von 0x20 enthält
- 0x22 den Wert von 0x21 enthält
Verwende ausschließlich Push- und Pop-Befehle.
Lösung
push 0x20 push 0x21 push 0x22 pop 0x20 pop 0x22 pop 0x21