LOOP <Sprungmarke>
Operand Beschreibung
<Sprungmarke> Symbolischer Name des Sprungziels.
Beschreibung
LOOP <Sprungmarke> (Dekrementiere AKKU1-L und springe, wenn AKKU1-L <> 0) vereinfacht die Programmierung von Schleifen. Der Schleifenzähler ist eine vorzeichenlose Ganzzahl (16 Bit) und befindet sich in AKKU1-L. Die Anweisung springt an das angegebene Sprungziel. Der Sprung wird ausgeführt, solange der Inhalt von AKKU1-L ungleich "0" ist. Der lineare Programmablauf wird am Sprungziel fortgesetzt. Dieses Sprungziel wird durch eine Sprungmarke angegeben. Es kann sowohl vorwärts als auch rückwärts gesprungen werden. Sprünge können nur innerhalb eines Bausteins ausgeführt werden, d. h. die Operation Programmschleife und das Sprungziel müssen innerhalb desselben Bausteins liegen. Das Sprungziel darf innerhalb dieses Bausteins nur einmal vorhanden sein. Die maximale Sprungweite liegt bei -32768 bzw. +32767 Wörtern des Programmcodes. Die tatsächliche maximale Anzahl der Anweisungen, die übersprungen werden können, hängt von der Kombination der Anweisungen innerhalb des Programms (Ein-, Zwei- oder Dreiwortanweisungen) ab.
Statuswort
BIE A1 A0 OV OS OR STA VKE /ER
schreibt: - - - - - - - - -
Beispiel zur Berechnung der Fakultät von 5 (5!)
Code:
AWL Erläuterung
L L#1 //Lade die Ganzzahl-Konstante (32 Bit) in den AKKU 1.
T MD20 //Transferiere den Inhalt von AKKU 1 in MD20 (Initialisierung).
L 5 //Lade die Anzahl der Schleifenzyklen in AKKU1-L.
NEXT: T MW10 //Sprungmarke = Anfang der Schleife / Transferiere AKKU1-L in Schleifenzähler.
L MD20
* D //Multipliziere aktuellen Inhalt von MD20 mit aktuellem Inhalt von MB10.
T MD20 //Transferiere Ergebnis der Multiplikation in MD20.
L MW10 //Lade den Inhalt des Schleifenzählers in AKKU 1.
LOOP NEXT //Dekrementiere den Inhalt von AKKU 1 und springe zur Sprungmarke NEXT, wenn AKKU1-L > 0 ist.
L MW24 //Der Programmablauf wird nach dem Ende der Schleife hier fortgesetzt.
L 200
>I