Das lernst du heute
- poke schreibt an eine Adresse
- sp bleibt stehen
- Stack als Tabelle nutzen
Mit push und pop arbeitet der Stack wie ein Tellerstapel. Manchmal willst du aber an eine bestimmte Stelle schreiben, ohne alles darüber abzuräumen. Dafür gibt es poke.
poke schreibt an eine Adresse
poke 5 293.15 # Adresse 5 = 293.15
get r0 db 5 # r0 = 293.15
poke adresse wert schreibt den Wert direkt an die Adresse. Gelesen wird mit get r? db adresse, das kennst du schon. Beide verändern sp nicht.
| Befehl | schreibt / liest | sp |
|---|---|---|
push wert | an Adresse sp | wird 1 größer |
pop r? | von Adresse sp − 1 | wird 1 kleiner |
poke adr wert | an Adresse adr | bleibt |
put db adr wert | an Adresse adr | bleibt |
get r? db adr | von Adresse adr | bleibt |
poke adr wert und put db adr wert tun dasselbe. poke ist kürzer, put kann zusätzlich in den Stack anderer Geräte schreiben.
Der Stack als Tabelle
Mit festen Adressen wird der Stack zu einer Tabelle. Ein Beispiel: fünf Lichtprogramme für die Bar, jedes mit einer Farbe:
poke 0 Color.White
poke 1 Color.Blue
poke 2 Color.Green
poke 3 Color.Orange
poke 4 Color.Red
Das Füllen steht vor dem Start-Label und läuft einmal. In der Hauptschleife reicht dann ein get:
lbn prog RAD HASH("Barlicht") Setting Average
get farbe db prog
Die Stellung des Dials ist direkt die Adresse in der Tabelle.
Eine Adresse über 511 meldet StackOverFlow, eine negative StackUnderFlow. Kommt die Adresse von außen, etwa von einem Dial, begrenzt du sie vorher mit max und min. Auch NaN gehört nicht in eine Adresse, fang es vorher ab.
Mischst du push und poke im selben Stack, leg die Tabelle an feste Adressen weit oben, etwa ab 400. Der push-Stapel wächst von 0 an nach oben und kommt ihr dann so schnell nicht in die Quere.
Schaubild
Übung
Aufgabe
Fünf Lichtprogramme für die Bar. Das Dial „Barlicht“ wählt das Programm 0 bis 4, die LEDs „Bar“ (StructureDiode) bekommen die Farbe.
- Füll vor dem Start-Label mit
pokedie Tabelle: 0Color.White, 1Color.Blue, 2Color.Green, 3Color.Orange, 4Color.Red. - Lies in der Schleife die Farbe mit
getaus der Tabelle. - Begrenze die Stellung auf 0 bis 4. Fehlt das Dial, gilt Programm 0.
spbleibt dabei 0.
Hinweise
Hinweis 1
Fünf poke-Zeilen vor start:.
Hinweis 2
NaN mit snan und select durch 0 ersetzen, dann max … 0 und min … LETZTES.
Hinweis 3
get farbe db prog holt die Farbe, ohne sp zu ändern.
Quiz
4 Fragen. Ab 60 % ist das Quiz bestanden – die Auswertung macht der Server.
Tag abschließen
- Übung im Simulator bestanden
- Quiz mit mindestens 60 % bestanden
Ohne Konto wird der Fortschritt nur in diesem Browser gespeichert.
Fehler in dieser Lektion melden
Zum Melden bitte anmelden. Anmelden