Seite 1 von 1
höchstwertigstes gesetztes Bit
Verfasst: Mi 27. Aug 2014, 14:17
von TomCat
Hallo,
gibt es eine Möglichkeit das höchstwertigste Bit in einem 32-Bitregister zu bestimmen ?
Beispiel:
Register EAX = 00000000 00000010 00110000 00111011b
hier wäre das Bit: 17 das höchstwertigste.
THX
TomCat
Re: höchstwertigstes gesetztes Bit
Verfasst: Mi 27. Aug 2014, 14:29
von ChrisR3tro
Ich schätze mal ein weg wäre es, solange zu shiften bis links alle nullen wegfallen und man auf die erste 1 trifft, die Anzahl der Shifts zu zählen. Dann würde man das rauskriegen irgendwie. :-)
Re: höchstwertigstes gesetztes Bit
Verfasst: Mi 27. Aug 2014, 14:35
von TomCat
ja das ist schon klar.
Das dauert halt, weil man da bis zu 32 mal shiften muesste. Das ist es ja eben !
es geht mir um was schnelles.
Re: höchstwertigstes gesetztes Bit
Verfasst: Mi 27. Aug 2014, 20:40
von Brueggi
ab 386 gibts Bit Scan - soweit ich weiss, stoppt der Befehl beim ersten gesetzten Bit und übergibt den Zähler im akku... da mein Schwerpunkt aber 286 ist, weiss ich es jetzt nicht 100%. Schau mal nach BSF und BSR - so müssten die heißen.
Re: höchstwertigstes gesetztes Bit
Verfasst: Do 28. Aug 2014, 18:43
von DOSferatu
Ja, genau so ist es.
ASM86FAQ.TXT ist eine gute Referenz dazu. Da werden die entsprechenden Befehle erklärt.
Soweit ich mich erinnere wird dann die Nummer des Bits in einem Register zurückgegeben.
Ist der zu scannende Wert =0 wird, soweit ich mich erinnere, das ZeroFlag gesetzt.
Re: höchstwertigstes gesetztes Bit
Verfasst: Sa 30. Aug 2014, 10:12
von TomCat
DOSferatu hat geschrieben:Ja, genau so ist es.
ASM86FAQ.TXT ist eine gute Referenz dazu. Da werden die entsprechenden Befehle erklärt.
Soweit ich mich erinnere wird dann die Nummer des Bits in einem Register zurückgegeben.
Ist der zu scannende Wert =0 wird, soweit ich mich erinnere, das ZeroFlag gesetzt.
ja habs ausprobiert. Funzt perfekt und ist schnell. so 3 Takte hab ich gemessen.
Danke!!