Obsah / Utility / TEXT / CharHexToBin
Zdrojový kód:
INCLUDE\UTIL\TEXT.INC, UTIL\TEXT.ASM
CharHexToBin -
Konverze ASCII hexadecimálního znaku na číslo
Funkce CharHexToBin
zkonvertuje ASCII hexadecimální znak (tj. znaky "0"
až "9", "A" až "F" nebo
"a" až "f") na číslo 0 až 15.
; -----------------------------------------------------------------------------
; Convert ASCII HEX character to a number
; -----------------------------------------------------------------------------
; INPUT: AL = HEX character ("0" to "9", "A" to "F" or "a" to "f")
; OUTPUT: AL = number 0 to 15 (if NC) or AL not changed (if CY)
; CY = invalid HEX character (AL not changed)
; -----------------------------------------------------------------------------
|
Na vstupu funkce obsahuje registr AL znak
ke konverzi. Jedná-li se o platný hexadecimální znak (tj.
znaky "0" až "9", "A" až
"F" nebo "a" až "f"), navrátí se
v registru AL hodnota 0 až 15 s příznakem CF je vynulovaným.
Pokud byl zadán neplatný hexadecimální znak, navrátí se
příznak chyby CY a obsah registru AL zůstane nezměněn.
; ------------- Check digit
CharHexToBin: cmp al,"0" ; check number MIN
jb CharHexToBin9 ; invalid character
cmp al,"9" ; check number MAX
jbe CharHexToBin7 ; character is OK
; ------------- Check capital letter
cmp al,"A" ; check letter MIN
jb CharHexToBin9 ; invalid character
cmp al,"F" ; check letter MAX
jbe CharHexToBin6 ; character is OK
; ------------- Check small letter
cmp al,"a" ; check letter MIN
jb CharHexToBin9 ; invalid character
cmp al,"f" ; check letter MAX
ja CharHexToBin8 ; invalid character
; ------------- Convert small letter to BIN (it clears CF)
sub al,"0"+("a"-("9"+1)) ; convert ASCII to BIN
ret ; here is NC
; ------------- Convert capital letter to BIN (it clears CF)
CharHexToBin6: sub al,"0"+("A"-("9"+1)) ; convert ASCII to BIN
ret ; here is NC
; ------------- Convert ASCII digit to BIN (it clears CF)
CharHexToBin7: sub al,"0" ; convert ASCII to BIN
ret ; here is NC
; ------------- Invalid HEX character
CharHexToBin8: stc ; set error flag
CharHexToBin9: ret
|
Funkce testuje znak v registru AL. Pokud
jde o platný hexadecimální znak, převede se na číslo a
navrátí se příznak NC. Není-li znakem platný
hexadecimální znak, zůstane obsah registru AL nezměněn a je
navrácen příznak chyby CY.
Obsah / Utility / TEXT / CharHexToBin