-> Hier kostenlos registrieren
Oder Limette kann Deinen Code nicht ganz deuten.
hehe ....
Das niederwertigste Bit habe ich als BitNr 1 abgefragt.
das habe ich schon so gemeint.
Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: This feature may not be available in some browsers.
Oder Limette kann Deinen Code nicht ganz deuten.
Das niederwertigste Bit habe ich als BitNr 1 abgefragt.
//_________________________________________________
// *** zum testen
L MD 404
TAD // Reihenfolge der Byte drehen (evtl. musst du die Reihenfolgen nicht drehen, ja nachdem wie sie bereits drinstehen)
RRD 16 // Worte Tauschen
T #DWordDatei // DWORD-Variable im Lokaldatenbeieich laden
//_________________________________________________
//_________________________________________________
// *** Abfrage
LAR1 P##DWordDatei // Adressoffset laden
L BitNummer // Die Bitnummer wählen (bei DWORD 0..31) (bei WORD 0..15)
+AR1 // Die Bits zum Adressregister addieren
U L [AR1,P#0.0] // auf die Bitnummer zugreifen (hier lokaldaten)
= #OK
//_________________________________________________
Falls du noch mehr mit dem Adressregister machst das sichern (vorher) und wiederherstellen (nach dem zugriff) nicht vergessen.
Oben hast Du was anderes gesagt:...
das habe ich schon so gemeint....
Das niederwertigste Bit habe ich als BitNr 1 abgefragt.
...
Aber wenn Du jetzt weist, wie Du abfragst, ist's OK.jup....
Und zur Sicherheit - Bit 5 ist dann das 6. Bit, ja?
...
LAR1 P##Dword // Adressoffset laden
L #Bitstelle // Die Bitnummer wählen (bei DWORD 0..31) (bei WORD 0..15)
+AR1 // Die Bits zum Adressregister addieren
U L [AR1,P#0.0] // auf die Bitnummer zugreifen (hier lokaldaten)
L 0 // Lade 0
==D // Vergleiche 0 mit der ausgewählten bitstelle, ob sie auch 0 ist
= #_OK
S M 70.5
U L [AR1, P#0.0]
= #_OK
U E0.0
= M70.5
= M70.5
U L [AR1, P#0.0]
= #_OK
L 0
==D
Wie bereits gesagt, steht das L nicht für LADE sondern für Lokaldatenbereich:... greifst Du schon direkt auf das Bit zu, wie z.B. bei:
...Code:U E0.0 = M70.5
...
Das L in der UND Zeile steht übrigens nicht für LADEN sondern für den Lokaldatenbereich, im FC also eine Temp-Variable!
...
...
==D
danke hucki, ich seh schon du gibst dir mühe.Wie bereits gesagt, steht das L nicht für LADE sondern für Lokaldatenbereich:
PS: Und wie kann man D.M.n. ein Bit mit einem DWORD vergleichen?
Code:... ==D
U E0.0
= A0.0
U L [AR1,P#0.0]
= #_OK
UND das Bit, das im Lokaldatenbereich an der Stelle steht, auf das das Adressregister AR1, plus den Versatz P#0.0, zeigt.
die temp-Variable muss übrigens nicht an der ersten Stelle stehen! Wo sie wirklich steht bzw. beginnt, stellt diese Zeile fest:...
mein dword muss also die erste temp variable sein, sie beginnt ja bei 0.0 im lokaldatenbereich ?! ( oder ich passe den offset entsprechend an )...
[COLOR=#333333]LAR1 P##DWordDatei
LAR1 P##Dword1 // Adressoffset laden
L #bitnummer // Die Bitnummer wählen (bei DWORD 0..31) (bei WORD 0..15)
+AR1 // Die Bits zum Adressregister addieren
U L [AR1,P#0.0] // auf die Bitnummer zugreifen (hier lokaldaten)
LAR2 P##Dword2
L #bitnummer
+AR2
U L [AR2,P#0.0]
==D
U #_OK
aus dem Kopf, ungetestet:...
mein ==D ist wieder am start ^^. das ist wahrscheinlich wieder falsch.
wie vergleicht man ar1 und ar2 ?
[FONT=courier new]TAR1 #dTempAR1 // Adressregister1 sichern
[/FONT][FONT=courier new]TAR2 #dTempAR2 // Adressregister2 sichern[/FONT]
[FONT=courier new]
LAR1 P##DWordDatei1 // 1. Adressoffset laden[/FONT]
[FONT=courier new]LAR2 P##DWordDatei2 // 2. Adressoffset laden[/FONT]
[FONT=courier new]L #BitNr // Die Bitnummer wählen (bei DWORD 0..31) (bei WORD 0..15)[/FONT]
[FONT=courier new]+AR1 // Die Bits zum Adressregister1 addieren[/FONT]
[FONT=courier new]+AR2 // Die Bits zum Adressregister2 addieren[/FONT]
[FONT=courier new]U L [AR1,P#0.0] // auf das Bit des 1. DWORD zugreifen[/FONT]
[FONT=courier new]= #_OK1[/FONT]
[FONT=courier new]U L [AR2,P#0.0] // auf d[/FONT][FONT=courier new]as Bit des 2. DWORD[/FONT][FONT=courier new] zugreifen[/FONT]
[FONT=courier new]= #_OK2[/FONT]
[FONT=courier new]U #_OK1 // Zustand 1. gesuchtes Bit mit
XN #_OK2[/FONT][FONT=courier new] // Zustand 2. gesuchtes Bit vergleichen[/FONT][FONT=courier new]
= #_OK3[/FONT][FONT=courier new] // wenn NICHT verschieden, dann GLEICH (NOT XOR)[/FONT][FONT=courier new]
LAR1 #dTempAR1 // Adressregister1 wieder herstellen[/FONT]
[FONT=courier new]LAR2 #dTempAR2 // Adressregister2 wieder herstellen[/FONT]
Bei Multiinstanzen ist es Pflicht, wenn du mit dem Adressregister 2 arbeitest.Da ich schon lange nichts mehr mit der 300er und deren Adressregistern gemacht habe ->
Wie sichert man das/die Adressregister und stellt es/sie anschließend wieder her?
Und sollte man sich angewöhnen, dies grundsätzlich zu tun oder nur in bestimmten Fällen?
Grundsätzlich ist es keine schlechte Angewohnheit.
Code:TAR1 #dTempAR1 //Adressregister retten TAR2 #dTempAR2 ... ... //Hier steht dann irgendeine Operation wo das Adressregister Vergerwaltigt wird ... ... LAR1 #dTempAR1 LAR2 #dTempAR2 //Adressregister zurückschreiben
aus dem Kopf, ungetestet:
Jetzt solltest Du vorher auf jeden Fall das Adressregister2 sichern, deswegen hab' ich es für beide AR mit reingeschrieben.Code:[FONT=courier new]TAR1 #dTempAR1 // Adressregister1 sichern [/FONT][FONT=courier new]TAR2 #dTempAR2 // Adressregister2 sichern[/FONT] [FONT=courier new] LAR1 P##DWordDatei1 // 1. Adressoffset laden[/FONT] [FONT=courier new]LAR2 P##DWordDatei2 // 2. Adressoffset laden[/FONT] [FONT=courier new]L #BitNr // Die Bitnummer wählen (bei DWORD 0..31) (bei WORD 0..15)[/FONT] [FONT=courier new]+AR1 // Die Bits zum Adressregister1 addieren[/FONT] [FONT=courier new]+AR2 // Die Bits zum Adressregister2 addieren[/FONT] [FONT=courier new]U L [AR1,P#0.0] // auf das Bit des 1. DWORD zugreifen[/FONT] [FONT=courier new]= #_OK1[/FONT] [FONT=courier new]U L [AR2,P#0.0] // auf d[/FONT][FONT=courier new]as Bit des 2. DWORD[/FONT][FONT=courier new] zugreifen[/FONT] [FONT=courier new]= #_OK2[/FONT] [FONT=courier new]U #_OK1 // Zustand 1. gesuchtes Bit mit XN #_OK2[/FONT][FONT=courier new] // Zustand 2. gesuchtes Bit vergleichen[/FONT][FONT=courier new] = #_OK3[/FONT][FONT=courier new] // wenn NICHT verschieden, dann GLEICH (NOT XOR)[/FONT][FONT=courier new] LAR1 #dTempAR1 // Adressregister1 wieder herstellen[/FONT] [FONT=courier new]LAR2 #dTempAR2 // Adressregister2 wieder herstellen[/FONT]
Wenn Dir einzelne Sachen nicht ganz klar sind, frag' ruhig - dafür ist das Forum da!Code:LAR1 P##Dword1 // Adressoffset laden L #bitnummer // Die Bitnummer wählen (bei DWORD 0..31) (bei WORD 0..15) +AR1 // Die Bits zum Adressregister addieren U L [AR1,P#0.0] // auf die Bitnummer zugreifen (hier lokaldaten) LAR2 P##Dword2 L #bitnummer +AR2 U L [AR2,P#0.0] ==D U #_OK
Hucki:
mir ist eingefallen, ich würde auch gerne zwei dwords auf die selbe bitstelle vergleichen. mein ==D ist wieder am start ^^. das ist wahrscheinlich wieder falsch.
wie vergleicht man ar1 und ar2 ?
kannst Du auch direkt (ohne die Zwischenzuweisungen) machen:...
...Code:[FONT=courier new]... U L [AR1,P#0.0] // auf das Bit des 1. DWORD zugreifen[/FONT] [FONT=courier new]= #_OK1[/FONT] [FONT=courier new]U L [AR2,P#0.0] // auf d[/FONT][FONT=courier new]as Bit des 2. DWORD[/FONT][FONT=courier new] zugreifen[/FONT] [FONT=courier new]= #_OK2[/FONT] [FONT=courier new]U #_OK1 // Zustand 1. gesuchtes Bit mit XN #_OK2[/FONT][FONT=courier new] // Zustand 2. gesuchtes Bit vergleichen[/FONT][FONT=courier new] = #_OK3[/FONT][FONT=courier new] // wenn NICHT verschieden, dann GLEICH (NOT XOR)[/FONT][FONT=courier new] [/FONT][FONT=courier new]...[/FONT]
[FONT=courier new]...
U L [AR1,P#0.0] // [/FONT][FONT=courier new]Zustand 1. gesuchtes Bit mit[/FONT]
[FONT=courier new]XN L [AR2,P#0.0] // [/FONT][FONT=courier new]Zustand 2. gesuchtes Bit vergleichen[/FONT]
[FONT=courier new]= #_OK3[/FONT][FONT=courier new] // wenn NICHT verschieden, dann GLEICH (NOT XOR)[/FONT][FONT=courier new]
[/FONT][FONT=courier new]...[/FONT]
Wir verwenden essentielle Cookies, damit diese Website funktioniert, und optionale Cookies, um den Komfort bei der Nutzung zu verbessern.
Siehe weitere Informationen und konfiguriere deine Einstellungen