…oder: Der Assembler-Code-Schnipsel der Woche
add al,90h
daa
adc al,40h
daa
Kann mir jemand ohne zu spicken sagen, was der Code macht?
Lösung anzeigen ▼
Der Code wandelt ein Nibble (halbes Byte, also Wert 0 bis 15) im Register al
in den ASCII-Wert der zugehörigen Hexadezimal-Ziffer (0..9A..F) um – der Trick dabei ist, dass es so ohne Vergleich und Sprung bzw. bedingte Befehle geht, was mit der naheliegenden Methode „addiere 30h (ASCII-Code für 0); wenn größer 9, dann addiere noch die Differenz der ASCII-Codes von A und 9 (denn da ist eine Lücke)“ nötig wäre.
Ist mir heute halt wieder begegnet, dieser Code…
Blinkfeuer1 15.05.2009 um 0:10 14 Kommentare
zitieren
Wieso Hexerei? Ich nenn das klare Kante.
Glückauf!
Dein Münte.
cimddwc 15.05.2009 um 12:35 6322 Kommentare
zitieren
Mir fällt keine gscheite Antwort ein, deswegen:
rolak2 17.05.2009 um 9:36 747 Kommentare
zitieren
Daß ich diesen guten alten nibble=>HexChar-Hack nochmal wiedersehe einer aus der Standardmacrosammlung…
Solche Magie kann ruhig öfter mal kommen, kein Problem, keine Angst.
cimddwc 17.05.2009 um 14:28 6322 Kommentare
zitieren
Da muss ich mal sehen, was sich sonst noch in meinen Codes verbirgt…