Das lernst du heute
- Bits im Kreis schieben
- 54 Bit Breite
- Lauflicht
Ein Lauflicht: Eine Lampe leuchtet, die nächste übernimmt, und nach der letzten fängt es vorne wieder an. Mit sll fällt das Bit links heraus und ist weg. Rotieren hält es fest: Was oben herausfällt, kommt unten wieder herein.
rol und ror
| Befehl | macht |
|---|---|
rol r? a n | rotiert a um n Stellen nach links |
ror r? a n | rotiert a um n Stellen nach rechts |
Im Spiel rotieren beide innerhalb von 54 Bit, nicht 64. Ein Bit, das links über Bit 53 hinausgeht, landet in Bit 0.
rol r0 %0001 1 # %0010 = 2
ror r1 %0010 1 # %0001 = 1
rol r2 %1000 2 # %10_0000 = 32
Die 54-Bit-Falle
Rotierst du Bit 0 um eins nach rechts, landet es ganz oben in Bit 53. Als Zahl ist das gigantisch und für vier Lampen völlig unbrauchbar. Auch nach links dauert es 54 Schritte, bis ein Bit wieder vorne ist. Für kleine Lauflichter brauchst du deshalb einen eigenen, kleinen Ring.
Kleine Ringe selbst bauen
Für einen Ring aus vier Bits holst du die herausgefallenen Bits selbst zurück: nach links rotieren, alles ab Bit 4 nach rechts schieben, wieder einsetzen und auf vier Bits abschneiden:
rol muster muster 1
srl tmp muster 4 # Bit 4 rutscht auf Bit 0
or muster muster tmp
and muster muster $F # nur Bit 0 bis 3 behalten
Nach rechts geht es mit demselben Code: In einem Ring aus vier Bits ist „1 nach rechts“ dasselbe wie „3 nach links“. Bei acht Bits wären es 7 nach links, und statt $F und 4 nimmst du $FF und 8.
Lauflicht
Jede Lampe bekommt ein Bit: Lampe 0 leuchtet, wenn Bit 0 gesetzt ist, und so weiter. Das Bit holst du mit srl und and 1 heraus – morgen geht das mit ext in einer Zeile.
Ein Takt dauert 0,5 s. Rotierst du jeden Takt, wandert das Licht zwei Schritte pro Sekunde. Langsamer wird es mit einem Zähler, der nur jeden n-ten Takt rotieren lässt.
Rotieren ist keine Rechnung. sll verdoppelt eine Zahl, bis Bits links herausfallen. rol verdoppelt nur, solange das oberste Bit frei ist – danach taucht es unten wieder auf und die Zahl wird plötzlich klein.
Schaubild
Übung
Aufgabe
Baue ein Lauflicht über die vier Lampen „LL0“ bis „LL3“. muster startet mit 1. Jeden Takt wandert das Licht eine Lampe weiter:
- Schalter „Richtung“ zu (
Open0) oder fehlend: nach oben (LL0 → LL1 → LL2 → LL3 → LL0) - Schalter offen: nach unten
- es leuchtet immer genau eine Lampe
Hinweise
Hinweis 1
Schrittweite mit select: 1 nach oben, 3 nach unten (Ring aus vier Bits).
Hinweis 2
Nach rol: srl tmp muster 4, or, and muster muster $F.
Hinweis 3
Lampe n: srl tmp muster n, and tmp tmp 1, sbn ….
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