stationeers.de Mod-Werkstatt · Dominik1199
EN Anmelden
  1. Start
  2. IC10-Akademie
  3. Tag 277

Tag 277 von 365 · Experte · Monat 10: Bits und Daten

Rotieren: rol und ror

rol und ror schieben Bits im Kreis: die 54-Bit-Breite des Spiels, kleine Ringe aus vier oder acht Bits selbst bauen und ein Lauflicht mit Richtungsschalter.

Lektion 16 Min. Woche 40

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

Befehlmacht
rol r? a nrotiert a um n Stellen nach links
ror r? a nrotiert 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.

Tipp

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.

Achtung

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

Die Registerbank des Chips r0 42 r1 31 r2 10 r3 -2.5 r4 0 r5 0 r6 0 r7 0 r8 0 r9 0 r10 0 r11 0 r12 0 r13 0 r14 0 r15 0 sp = r16 ra = r17 16 freie Register, je eine Zahl sp: Stapelzeiger · ra: Rücksprungadresse
Beim Rotieren geht kein Bit verloren: Was oben herausfällt, kommt unten wieder herein.

Ü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 (Open 0) 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

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