prüfen ob bit gesetzt ist?
-
hi,
wie kann ich denn überprüfen welche bits z.b. in ax gesetzt sind?
-
Wenn dich ein bestimmtes bit interessiert, dürfte bt dein kandidat sein
bt ax, 5 z.B. testet ob bit 5 in ax gesetzt ist. So kann man dann wenn man alle bist will die zahl abklappern
-
Mit der logischen Verknüpfung and kann man überprüfen, ob bestimmt Bits gesetzt sind.
mov ah,100 ;AH=01100100b mov al,32 ;AL=00100000b and ah,al ;AH=00100000b mov ah,100 ;AH=01100100b mov al,16 ;AL=00010000b and ah,al ;AH=00000000b
Sofern das Bit gesetzt ist, kommt ein Ergebnis ungleich 0 heraus.
(Hoffe, das war einigermaßen verständlich. Sonst kann ich dir nur nen gutes ASM-Buch empfehlen ;))
-
Original erstellt von The Monument:
**Mit der logischen Verknüpfung and kann man überprüfen, ob bestimmt Bits gesetzt sind.
**Also da finde ich bt komfortabler
-
*zustimm* Das scheint mir doch leicht umstaendlich. bt ist ok.
Und wenn nicht bt, dann benutz lieber "test", als "and" oder "or" um Vergleiche zu machen.Bsp:
testen ob Bit 5 von ax gesetzt ist:
test ax,0020h
-
Ja, ok, wollte nur zeigen, dass man dafür auch and verwenden kann
-
und warum muss ich test ax,20h machen wenn ich wissen will ob das 5. bit gesetzt ist ?
-
Original erstellt von <Marcel>:
und warum muss ich test ax,20h machen wenn ich wissen will ob das 5. bit gesetzt ist ?Weil 20h = 0000000000100000 und damit das 5te bit
-
Wo wir schon dabei sind, noch ne Möglichkeit:
testen ob bit 5 in ax gesetzt ist:ror ax,5
Danach muss nur noch ein JC bzw. JNC kommen.