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. Labels und Sprünge

Kapitel 3 · Entscheidungen & Stil

Labels und Sprünge

Mit j, beq, bgt & Co. trifft der Chip Entscheidungen.

Lektion 7 von 18 9 Min.

IC10 kennt kein if und keine Schleifenbefehle. Alles läuft über Sprünge zu Labels.

Labels

Ein Label ist ein Name mit Doppelpunkt, allein auf seiner Zeile:

heiss:

Es tut selbst nichts, markiert aber die Zeile als Sprungziel. Steht noch etwas dahinter (heiss: s d1 On 1), versteht der Chip die Zeile nicht.

Unbedingt springen: j

j start springt immer. Damit baust du die Hauptschleife.

Bedingt springen

Befehlspringt, wenn
beq a b ziela = b
bne a b ziela ≠ b
bgt a b ziela > b
bge a b ziela ≥ b
blt a b ziela < b
ble a b ziela ≤ b
beqz a ziel / bnez a ziela = 0 / a ≠ 0

Ist die Bedingung falsch, macht der Chip einfach mit der nächsten Zeile weiter.

start:
yield
l r0 d0 Temperature
bgt r0 303.15 heiss   # waermer als 30 C?
s d1 On 0             # nein: Lampe aus
j start
heiss:
s d1 On 1             # ja: Lampe an
j start
Achtung

Befehle mit br am Anfang (breq, brgt …) und jr springen relativ um eine Anzahl Zeilen. Ein Label ist dort fast immer falsch, weil seine Zeilennummer einfach addiert wird. Für Labels immer die Varianten ohne r nehmen.

Tipp

Spring nie auf Zeilennummern wie j 5. Fügst du oben eine Zeile ein, landet der Sprung woanders. Labels wandern mit.

Schaubild

Ablauf mit bedingtem Sprung start: yield · l r0 r0 > 303.15? heiss: On 1 On 0 ja: bgt springt nein: nächste Zeile j start
Ein bedingter Sprung teilt den Ablauf: Ist die Bedingung wahr, geht es beim Label weiter, sonst in der nächsten Zeile.

Übung

Aufgabe

Ein Warnlicht an d1 soll leuchten, wenn der Sensor an d0 mehr als 30 °C (303,15 K) misst – sonst aus. Löse das mit einem bedingten Sprung (bgt, blt …) in einer Endlosschleife.

Hinweise

Hinweis 1

bgt r0 303.15 heiss springt zum Label heiss:, wenn es wärmer ist.

Hinweis 2

Vergiss nach jedem Zweig das j start nicht – sonst läuft der Chip in den anderen Zweig hinein.

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