SchiebeFrage Byte/Bit

Limette

Level-2
Beiträge
282
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Ich habe ein Byte und würde gerne wissen ob Bit 4 null oder eins ist.

Mit der SHR_L und SHR_R kann ich die bits hin und her schieben. Ist aber für 16 bit. Logischerweise ist dann mein Byte nur Bit 0 bis 7, richtig ?
Möglich wäre es doch, dass ich solange hin und her schiebe bis nur noch bit 4 da ist. Am ausgang (Int) steht dann entweder 1 oder 0, richtig ?
Oder werden die freigewordenen Bitpositionen mit 1 aufgefüllt ?

Gruß und Dank
 
Also ich würds so machen:

L Byte
SRW 4
>0
=Bit4

Tschuldigung, ich hatte irgendwie hier reingeschrieben, das sollte titiert werden! Ralle :confused:
 
Zuletzt bearbeitet von einem Moderator:
Zuviel Werbung?
-> Hier kostenlos registrieren
Richtig, du kannst 12 Mal nach links schieben, dann 15 Mal nach rechts, so dass dein Bit genau in Position 0 stehen bleibt und hast dann eine Int 0 oder 1 zu auslesen. Aufgefüllt wird mit 0.
Oder du maskierst aus mit einem Wert, der deiner Bitposition entspricht, in deinem Fall mit 8hex (00000000 00001000bin) mit dem Befehl UW und vergleichst dann auf Null oder ungleich Null.
 
Warum verUNDest du nicht mit einem Maskenbyte/-word und fragst auf größer 0?
In der Maske alle nichtbenötigen Stellen auf Null und nur Bit 4 auf 1, dann bleibt nur das über, was Du wissen willst.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also ich würds so machen:

L Byte
SRW 4
>0
=Bit4

Bin nicht sicher, dass das so funktioniert, denn es kann ja auch noch bit 5 True sein?

Ich denke vielleicht so:

Code:
L Byte
SRW 4   //Das Bit wird in A1 geschoben (letztes rausgeschobenes Bit)
SPP MBI4 /wenn das letzte rausgeschobene Bit 1 ist, dann...

R Bit4
SPA NIX

MBI4: set
S Bit4

NIX: NOP 0

Kann man ja mal testen. :)
 
Ich habe ein Byte und würde gerne wissen ob Bit 4 null oder eins ist.
Ich würde das Bit mit einer Wortverknüpfung abfragen. Nach einer Wortverknüpfungsoperation ist das Statusbit A0 immer 0 und das Statusbit A1 zeigt an, ob das Ergebnis im Akku1 ==0 oder <>0 ist. Bei ver-unden eines Einzelbits steht dann also genau der Wert dieses Bits in A1 und kann mit "U <>0" oder "U >0" direkt abgefragt werden. Bedingte Sprünge sind nach der Wortverknüpfung auch sofort möglich (SPZ, SPN, SPP).
Code:
      L     "Byte"
      UW    W#16#10     //Wert des Bit4 steht danach in Statusbit A1
      U     <>0         //A1 ins VKE kopieren
      =     "Bit4"

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich würde das Bit mit einer Wortverknüpfung abfragen. Nach einer Wortverknüpfungsoperation ist das Statusbit A0 immer 0 und das Statusbit A1 zeigt an, ob das Ergebnis im Akku1 ==0 oder <>0 ist. Bei ver-unden eines Einzelbits steht dann also genau der Wert dieses Bits in A1 und kann mit "U <>0" oder "U >0" direkt abgefragt werden. Bedingte Sprünge sind nach der Wortverknüpfung auch sofort möglich (SPZ, SPN, SPP).
Code:
      L     "Byte"
      UW    W#16#10     //Wert des Bit4 steht danach in Statusbit A1
      U     <>0         //A1 ins VKE kopieren
      =     "Bit4"

Harald

Ah, jetzt hab ich das in der Hilfe gefunden, damit hab ich tatsächlich noch niemals gearbeitet. :p
Dann hat ja schon Borremeus den korrekten Ansatz geliefert, denn das herausgeschobene Bit taucht ja auch im Statuswort in A1 auf.
Man lernt echt nie aus und es gibt immer mehr als einen Weg zum Ziel. :ROFLMAO:
 
Hallo,

Also Schmiermerker sind nicht "willkommen".
Habe das von Borremeus genommen, sieht am einfachsten aus:

Code:
L Byte
SRW 4
[COLOR=#ff0000]>0
[/COLOR]=Bit4

Die Null geht leider so nicht. Macht aber glaub auch nichts. Habe ja den Zustand in "bit4" drin und kann mit Öffner/Schließer damit weiterarbeiten.
Wenn ich nur vier nach rechts schieben muss, ist es natürlich einfacher als erstmal alles nach links und dann wieder nach rechts.

BTW:
einmal hat Ralle

Code:
L Byte
L w#16#[COLOR=#ff0000]8[/COLOR] //8hex = 1000bin
UW
L 0
<>I
=Bit4
und PN/DP

Code:
L "Byte" 
UW W#16#[COLOR=#ff0000]10[/COLOR] //Wert des Bit4 steht danach in Statusbit A1 
U <>0 //A1 ins VKE kopieren 
= "Bit4"

Kann beides für Bit4 stimmen ?
 
Habe das von Borremeus genommen, sieht am einfachsten aus:

Code:
L Byte
SRW 4
[COLOR=#ff0000]>0
[/COLOR]=Bit4

Die Null geht leider so nicht. Macht aber glaub auch nichts. Habe ja den Zustand in "bit4" drin und kann mit Öffner/Schließer damit weiterarbeiten.

Bei "die Null" fehlt noch ein U, dann funktioniert der Code:
Code:
L Byte
SRW 4
[COLOR=#ff0000]U [/COLOR]>0
=Bit4
"Einfach aussehen" ist relativ... was man bei dieser Variante nicht sieht, zum Verstehen aber wissen muß, ist daß bei Schiebeoperationen das zuletzt geschobene Bit in A1 steht - sich das A1 also NUR auf EIN Bit bezieht und NICHT auf das Ergebnis im Akku.

Harald
 
Zurück
Oben