Günni1977
Level-1
- Beiträge
- 232
- Reaktionspunkte
- 25
-> Hier kostenlos registrieren
Hallo an alle,
ich habe ein Problem mit Pointern. Mache dies auch eher zum ersten mal.
Ich habe einen DB mit 10 REAL-Werten ab Wort 0.
Nun will ich einen Eingangswert lesen und den nächst größeren bzw. nächst kleineren Wert aus dem DB wissen (beide).
Gleichzeitig will ich wissen, auf welchem Wert mein Pointer zeigt, um einen anderen DB mit dem Pointerwert zu durchsuchen.
Bsp:
Im DB1 steht im DW 20 der Wert 40.
Im DB1 steht im DW 24 der Wert 50.
Als Eingang lese ich 45.
Nun brauche ich die Werte 40 (<Eingang), 50 (>Eingang) und den Wert 24 (Doppelwort im DB).
Erstmal geht es mir nur um die Pointerposition, im Beispiel das DW 24. Diese soll erstmal in #Kennwert stehen.
Mein Code sieht so bisher aus:
L 0
SLD 3
LAR1
L 10 // Durchläufe Schleife
loop: T #LoopCounter // Schleifenzähler
AUF "DB7 Array Pointer"
L DBD [AR1,P#0.0] // Wert im DB größer/gleich
L #x_IN // dem gegebenem X-Wert?
>=R
SPB MAX
L P#4.0 // Adressregister um 4 Byte erhöhen
+AR1 // -> nächster REAL-Wert im DB
L #LoopCounter // Schleifenzähler
LOOP loop // Schleife fortsetzen
MAX: NOP 0
LAR1
T #Kennwert // Ausgang
sorry wenn es schlecht lesbar ist. Ich weiß nicht, wie ich den Code hier sonst leserlich anzeigen soll.
ich habe ein Problem mit Pointern. Mache dies auch eher zum ersten mal.
Ich habe einen DB mit 10 REAL-Werten ab Wort 0.
Nun will ich einen Eingangswert lesen und den nächst größeren bzw. nächst kleineren Wert aus dem DB wissen (beide).
Gleichzeitig will ich wissen, auf welchem Wert mein Pointer zeigt, um einen anderen DB mit dem Pointerwert zu durchsuchen.
Bsp:
Im DB1 steht im DW 20 der Wert 40.
Im DB1 steht im DW 24 der Wert 50.
Als Eingang lese ich 45.
Nun brauche ich die Werte 40 (<Eingang), 50 (>Eingang) und den Wert 24 (Doppelwort im DB).
Erstmal geht es mir nur um die Pointerposition, im Beispiel das DW 24. Diese soll erstmal in #Kennwert stehen.
Mein Code sieht so bisher aus:
L 0
SLD 3
LAR1
L 10 // Durchläufe Schleife
loop: T #LoopCounter // Schleifenzähler
AUF "DB7 Array Pointer"
L DBD [AR1,P#0.0] // Wert im DB größer/gleich
L #x_IN // dem gegebenem X-Wert?
>=R
SPB MAX
L P#4.0 // Adressregister um 4 Byte erhöhen
+AR1 // -> nächster REAL-Wert im DB
L #LoopCounter // Schleifenzähler
LOOP loop // Schleife fortsetzen
MAX: NOP 0
LAR1
T #Kennwert // Ausgang
sorry wenn es schlecht lesbar ist. Ich weiß nicht, wie ich den Code hier sonst leserlich anzeigen soll.