Stack (Assembler)

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:

  1. Push: Der Wert der angegeben Adresse wird auf dem Stack abgelegt.
  2. 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