Temporäre Valiable Byte Auswertung

Guste

Level-1
Beiträge
338
Reaktionspunkte
16
Zuviel Werbung?
-> Hier kostenlos registrieren
Temporäre Variable Byte Auswertung

Hallo Gemeinde ich steh momentan voll auf dem Schlauch
Ich leg eine temoräre Variable an #Programm.
Aus der Variablen will ich nun die bits einzeln auswerten.
Also beim Merkerbyte ginge es so:
// Test
L 3
T MB 10

U M10.0
= A123.0
U M10.1
= A123.1

Danke
 
Zuletzt bearbeitet:
Hi Guste,

L 3
T LB 0 //lokales Byte 0
U L0.0 //Bit 1 im lokalen Byte 0
= A0.0
U L0.1 //Bit 2 im lokalen Byte 0
= A0.1
was Vierlagig sicherlich meint, ist die Tatsache das du nicht der einzige und nicht der letzte sein wirst der das Programm bearbeitet.
Wenn die Lokaldaten "ungeschickt" verändert werden, dann greift der Code ins Leere oder ins Falsche...

Gruß
Toki
 
Also schreib ich
L3
T LB0
U L0.0
= A0.0


War bloß die Antwort auf seine Frage!!! Kann man natürlich viel Unfug mit anrichten!
Was soll hier passieren ???

U L0.1
= A0.1

U L0.2
= A0.2
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es ist eine gewisse Vorsicht geboten beim direkten Zugriff von Lokalvariablen, wenn
eine Variabel in den Temponären Bereich deklariert wird kann es dort zu überschneidungen
kommen.
Beim den FAQ von Kollegen 4L ist das beispielhaft, gut gelösst, so kann symbolisch programmiert
werden und beim zufügen Temponären Variable, arbeitet Mann immer mit den richtigen Variablen
und kann den durch Überschneidungen möglichen Doppelzugriff vermeiden.

Versuch doch mal das Beispiel umzusetzen, wenn es klemmt helfen wir.
 
Guten Morgen,

geschickter wäre es, bzw. ich würde es so tun, das ganze über die Adressregister auszuwerten.
Ich hätte bei deiner Varainte die Befürchtung, dass wenn irgend so ein Vollhonk da her kommt und in den Lokaldatenbereich vorn noch ein Bool Varaibel einfügt, deine ganze Programmierung zermurkst.

Naja, wie in 4Ls FAQ eben.

Beispielsweise so:
L P##Programm //Tempräre Variable Programm als Pointer deklarieren
LAR1 //Die Adresse der Temporären Variable Programm ins Adressregister 1 laden
L LB [ar1,P#0.0] //mittels Pointer aus dem Lokaldatenbereich das Bit 0.0 bezogen aufs Adressregister 1 laden
=A0.0 //dazu brauch ich wohl nichts kommentieren
L LB [AR1,P#0.1]
=A0.1
 
Zuletzt bearbeitet:
Zurück
Oben