Verwenden des Parametertyps POINTER
Ein Pointer wird verwendet, um auf einen Operanden zu zeigen. Der Vorteil dieser Adressierung ist, daß Sie den Operanden der Anweisung während der Programmbearbeitung dynamisch modifizieren können.
Pointer zur speicherindirekten Adressierung
Programmanweisungen, die mit der speicherindirekten Adressierung arbeiten, setzen sich zusammen aus einer Operation, einem Operandenkennzeichen und einem Versatz (der Versatz muß in eckigen Klammern angegeben werden).
Beispiel für einen Pointer im Doppelwortformat:
L P#8.7 Lade den Wert des Pointers in AKKU 1.
T MD2 Transferiere den Pointer nach MD2.
U E [MD2] Frage den Signalzustand an Eingang E 8.7 ab,
= A [MD2] und weise den Signalzustand Ausgang A 8.7 zu.
Pointer zur bereichsinternen und bereichsübergreifenden Adressierung
Die Programmanweisungen, die mit diesen Adressierungen arbeiten, setzen sich zusammen aus einer Operation und den folgenden Teilen: Operandenkennzeichen, Adreßregister-Kennung, Versatz.
Das Adreßregister (AR1/2) und der Versatz müssen zusammen in eckigen Klammern angegeben werden.
Beispiel zur bereichsinternen Adressierung
Der Pointer enthält keine Angabe zu einem Speicherbereich:
L P#8.7 Lade den Wert des Pointers in AKKU 1.
LAR1 Lade den Pointer von AKKU 1 in AR1.
U E [AR1, P#0.0] Frage den Signalzustand an Eingang E 8.7 ab und
= A [AR1, P#1.1] weise den Signalzustand dem Ausgang zu A 10.0 zu
Der Versatz 0.0 hat keinen Einfluß. Ausgang 10.0 errechnet sich aus 8.7 (AR1) plus den Versatz 1.1. Das Ergebnis ist 10.0 und nicht 9.8, siehe Pointer-Format.
Beispiel zur bereichsübergreifenden Adressierung
Bei der bereichsübergreifenden Adressierung ist im Pointer der Speicherbereich angegeben (im Beispiel E bzw. A).
L P# E8.7 Lade den Wert des Pointers und Bereichskennung in AKKU 1.
LAR1 Lade Speicherbereich E und die Adresse 8.7 in AR1.
L P# A8.7 Lade den Wert des Pointers und Bereichskennung in AKKU 1.
LAR2 Lade Speicherbereich A und die Adresse 8.7 in AR2.
U [AR1, P#0.0] Frage den Signalzustand an Eingang E 8.7 ab und
= [AR2, P#1.1] weise den Signalzustand Ausgang A 10.0 zu.
Der Versatz 0.0 hat keinen Einfluß. Ausgang 10.0 errechnet sich aus 8.7 (AR2) plus 1.1 (Versatz). Das Ergebnis ist 10.0 und nicht 9.8, siehe Pointer-Format.