Aktuell kommt es zu Probleme mit dem Email Versand dies wird schnellstmöglich behoben.

stationeers.de Mod-Werkstatt · Dominik1199
EN Anmelden
  1. Start
  2. IC10-Akademie
  3. Der Stack: push, pop, peek

Kapitel 6 · Speicher & Struktur

Der Stack: push, pop, peek

512 zusätzliche Speicherplätze – als Stapel oder mit direkter Adresse über get und put.

Lektion 15 von 18 9 Min.

16 Register sind schnell belegt. Dafür hat jeder Chip einen Stack mit 512 Plätzen. Das Register sp (Stapelzeiger) zeigt immer auf den nächsten freien Platz.

Stapeln

push 10      # Platz 0 = 10, sp = 1
push 20      # Platz 1 = 20, sp = 2
pop r0       # r0 = 20, sp = 1
peek r1      # r1 = 10, sp bleibt 1
  • push wert legt oben drauf.
  • pop r? nimmt das Oberste herunter.
  • peek r? schaut nur nach, ohne zu entfernen.

Was zuletzt hineinkam, kommt zuerst wieder heraus – wie ein Tellerstapel in der Kantine.

Direkt adressieren

Mit get und put greifst du auf einen bestimmten Platz zu, ohne sp zu verändern. db ist dabei das eigene Gehäuse:

put db 5 293.15   # Platz 5 = 293.15
get r2 db 5       # r2 = 293.15

Das geht sogar mit anderen Chips: get r0 d0 3 liest Platz 3 aus dem Stack des Chips an Pin d0. So reden zwei Chips miteinander.

Achtung

pop auf einen leeren Stack meldet StackUnderFlow, push auf einen vollen StackOverFlow. Und sp ist ein ganz normales Register – überschreibst du es aus Versehen, ist die Stapelordnung dahin.

Schaubild

Der Stack mit Stapelzeiger Platz 0 10 Platz 1 20 Platz 2 30 Platz 3 Platz 4 sp = 3 nächster freier Platz push 40 pop r0 r0 = 30 zuletzt rein, zuerst raus
push legt oben auf und erhöht sp, pop nimmt das Oberste herunter. Was zuletzt kam, geht zuerst.

Übung

Aufgabe

Lege die Zahlen 10, 20, 30 in dieser Reihenfolge auf den Stack. Dann:

  • r4 = der Wert auf Platz 1 des Stacks (direkt mit get über db)
  • hole alle drei Werte wieder herunter, sodass r0 = 30, r1 = 20, r2 = 10
  • r3 = der Stapelzeiger sp am Ende

Hinweise

Hinweis 1

Dreimal push, dann get r4 db 1 – noch bevor du etwas herunterholst.

Hinweis 2

Dreimal pop: der erste pop liefert die 30.

Hinweis 3

move r3 sp liest den Stapelzeiger.

Esc
↑ ↓ wählenEnter öffnen/ öffnet die Suche überall