Vorgänger-Lokaldaten auswerten

Oele

Level-1
Beiträge
21
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,

ich weiß, das Thema wurde schon öfter behandelt. Ich muss aber leider zugeben, dass ich es immer noch nicht wirklich verstanden habe. Und zwar geht es um folgendes:

Ich habe eine Funktion FC1, welche eine Funktion FC2 aufruft.
In FC1 initialisiere ich mir eine temporäre Variable (z.B. L 20, T #temp).
Auf diese lokale Variable möchte ich dann im FC2 zugreifen. Dies ist ja scheinbar mit einem ANY-Pointer machbar. Dieser Pointer wird im FC1 implementiert und zeigt auf die lokale Variable. Diesen Zeiger gebe ich dann beim Aufruf der FC2 als IN-Parameter weiter.
Meine Frage ist jetzt, wie ich diesen überreichten Pointer im FC2 auswerten kann, so dass mir der Wert der lokalen Variablen angezeigt wird? Also dass ich dann wirklich den Inhalt von #temp (z.B. 20) sehen kann. Ich bekomme es nämlich einfach nicht hin... Bekomme es nur hin die Daten des Pointers auszulesen (Datentyp, Wiederholfaktor, Speicherbereich,...). Das ist aber nicht für mich relevant.

Dass dies auch mit "normaler" Schnittstellen Parameter-Übergabe möglich ist, ist mir klar. Darum soll es hier aber nicht gehen.

Schonmal im vorraus Danke für eure Antworten:D

Gruß Oele
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mein Programm bislang...

Das mit dem "Codierung der Speicherbereiche" habe ich ja auch benutzt.

Im Anhang befindet sich mein Programm. Vielleicht wird meine Frage dann etwas klarer.
 

Anhänge

  • Mein_Programm.doc
    55,5 KB · Aufrufe: 59
In Deinem Programm übergibst Du für den Speicherbereich die Kennung für Lokaldaten (L-Stack):

Code:
      L     B#16#86                     // Lokaldaten
      T     LB [AR1,P#6.0]

Du musst aber für den Speicherbereich die Kennung für vorherigen Lokaldaten (V-Stack) übergeben:

Code:
      L     B#16#87                     // vorherige Lokaldaten
      T     LB [AR1,P#6.0]

Gruß Kai
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ziel fast erreicht...

Vielen Dank Kai.

So konnte es ja nicht klappen...:rolleyes:

Aber wie kann ich jetzt im FC2 mit der lokalen Variablen aus FC1 weiterarbeiten? Der ANY-Pointer wird mir mit seinen Eigenschaften ja angezeigt (siehe Anhang).
Die 50 hex entsteht ja durch das verschieben der 10 hex um 3 Bits nach links. Die lokale Variable liegt ja bei LW 10 im FC1. Wie kann ich jetzt auf deren Inhalt im FC2 zugreifen?
Stehe gerade voll auf dem Schlauch...
 

Anhänge

  • Mein_Programm.doc
    73,5 KB · Aufrufe: 20
*Glühbirne*

Ich habs nun raus.
Ganz zum Schluss steht nun die Adresse der vorherigen lokalen Variablen im Adressregister 1. Dieses muss ich dann nur noch indirekt adressiert laden:

Code:
 L W [AR1,P#0.0] 
 T MW 60

Das hatte ich die ganze Zeit gesucht. War nur nicht darauf gekommen.

Nochmals vielen Dank :D
 
und noch ein Problemchen

Eine Frage hätte ich jetzt aber doch noch.

Und zwar funktioniert dies bislang nur mit mit einzelnen/mehreren Bytes, Wörter, DWs... Kann man diese Methodik auch benutzen, um einen ganzen String / Array mit dem Pointer zu referenzieren und dann im aufgerufenen Baustein seine Elemente einzeln per indirekter Adressierung anzusprechen? Datentyp String entspricht B#16#13. Nur welche Wiederholungszahl muss ich dann eingeben? Der String hat beispielsweise 32 Elemente. Und was wäre bei einem Array? Den Datentyp gibt es scheinbar nicht für ANY-Pointer...
 
Zurück
Oben