Tvůrce webu je i pro tebe! Postav třeba web. Bez grafika. Bez kodéra. Hned.
wz

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