-> 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: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
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]
= #_OKU E0.0
= M70.5= M70.5U L [AR1, P#0.0]
= #_OKL 0
==DWie 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!
...
...
==Ddanke 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.0U L [AR1,P#0.0]
= #_OKUND 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     #_OKaus 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
 
	