SX Microcontroller Radix Math Method

ASCII hexadecimal to Binary with Range Checking

	
device	SX28L, turbo, STACKX_OPTIONX

	mov NextChar, #$47
:loop
	mov temp, NextChar
	clc
	mov w, #'F'
	mov w, temp - w
	jc :Bad

	mov w, #'0'-1
	mov w, temp - w
	jnc :Bad

	mov w, #'@'+1
	sub temp, w
	mov w, #('@' - ':') + 1
	add temp, w
	jc :BadRestore

	mov w, #(':' - '0')
	sb temp.7
	 mov w, #('A' - '@')+1
	add temp, w
	jmp :Good

:BadRestore
	mov w, #':'-1
	add temp, w
:Bad
	nop
	jmp :Next
:Good
	nop
:Next
 break
	djnz NextChar, :Loop