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

Obsah / Utility / TEXT / CharDecToBin

Zdrojový kód: INCLUDE\UTIL\TEXT.INC, UTIL\TEXT.ASM


CharDecToBin - Konverze ASCII dekadického znaku na číslo

Funkce CharDecToBin zkonvertuje ASCII dekadický znak (tj. znaky "0" až "9") na číslo 0 až 9.


; -----------------------------------------------------------------------------
;                   Convert ASCII decimal character to a number
; -----------------------------------------------------------------------------
; INPUT:	AL = ASCII decimal character ("0" to "9")
; OUTPUT:	AL = number 0 to 9 (if NC) or AL not changed (if CY)
;		CY = invalid decimal character (AL not changed)
; -----------------------------------------------------------------------------

Na vstupu funkce obsahuje registr AL znak ke konverzi. Jedná-li se o platný dekadický znak (tj. znaky "0" až "9"), navrátí se v registru AL hodnota 0 až 9 s příznak CF vynulovaným. Pokud byl zadán neplatný dekadický znak, navrátí se příznak chyby CY a obsah registru AL zůstane nezměněn.


; ------------- Check digit

CharDecToBin:	cmp	al,"0"		; check number MIN
		jb	CharDecToBin9	; invalid character
		cmp	al,"9"		; check number MAX
		ja	CharDecToBin8	; invalid character

; ------------- Convert ASCII digit to BIN (it clears CF)

		sub	al,"0"		; convert ASCII to BIN
		ret			; here is NC

; ------------- Invalid HEX character

CharDecToBin8:	stc			; set error flag
CharDecToBin9:	ret

Funkce testuje znak v registru AL. Pokud jde o platný dekadický znak, převede se na číslo a navrátí se příznak NC. Není-li znakem platný dekadický znak, zůstane obsah registru AL nezměněn a je navrácen příznak chyby CY.


Obsah / Utility / TEXT / CharDecToBin