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. Unterprogramme mit jal und ra

Kapitel 6 · Speicher & Struktur

Unterprogramme mit jal und ra

Code einmal schreiben, mehrfach benutzen: Sprung mit Rückfahrkarte.

Lektion 16 von 18 10 Min.

Zwei Sensoren, zwei Anzeigen, zweimal dieselbe Umrechnung – Kopieren kostet Zeilen und Zeichen. Besser: die Rechnung einmal als Unterprogramm schreiben.

jal: Sprung mit Rückfahrkarte

jal celsius     # springt zu celsius, ra = naechste Zeile

jal springt wie j, schreibt aber vorher die Nummer der nächsten Zeile ins Register ra. Am Ende des Unterprogramms bringt dich j ra genau dorthin zurück.

start:
yield
l r0 d0 Temperature
jal celsius          # r1 = r0 in Grad C
s d2 Setting r1
l r0 d1 Temperature
jal celsius
s d3 Setting r1
j start

celsius:
sub r1 r0 273.15
j ra                 # zurueck zum Aufrufer

Ein- und Ausgabe laufen über abgesprochene Register: Hier erwartet celsius den Wert in r0 und liefert das Ergebnis in r1.

Achtung

Das Unterprogramm gehört hinter das j start. Sonst läuft der Chip am Ende der Hauptschleife hinein, und j ra springt an eine Stelle, die vom letzten Aufruf übrig ist.

Tipp

Ruft ein Unterprogramm selbst ein anderes auf, wird ra überschrieben. Dann vorher push ra und vor dem Rücksprung pop ra.

Schaubild

Aufruf und Rücksprung eines Unterprogramms Hauptschleife 2 l r0 d0 Temperature 3 jal celsius 4 s d2 Setting r1 5 l r0 d1 Temperature 6 jal celsius 7 s d3 Setting r1 8 j start celsius: sub r1 r0 273.15 j ra ra = 4 zurück zu Zeile ra
jal springt ins Unterprogramm und merkt sich in ra die Zeile danach. j ra kehrt genau dorthin zurück.

Übung

Aufgabe

Zwei Gas-Sensoren an d0 und d1, zwei LED-Anzeigen an d2 und d3. Jede Anzeige zeigt die Temperatur „ihres“ Sensors in °C (d0 → d2, d1 → d3).

Schreib die Umrechnung nur einmal als Unterprogramm und rufe es mit jal zweimal auf.

Hinweise

Hinweis 1

Im Unterprogramm reicht eine Zeile: sub r1 r0 273.15.

Hinweis 2

In der Hauptschleife: Sensor nach r0 lesen, jal celsius, dann r1 auf die Anzeige schreiben – zweimal.

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