;
; file name: hexbcd.txt
; dest file: hexbcd.src
; version: 1.0.1.0
; update: 3-9-29 9:44
; coder: use_id
;

v1.1.0.0
	1. ʵ 8bit  16bit hex -> bcd ໥ת
	
==================
壺
==================
; =============================================================
; hex <-> bcd temp buffer(tb) variables
gTb_End:				.equ		0c0h
gTb_Begin:				.equ		gTb_End-04h		; 0bch
gTemp_Buffer3:			.equ		gTb_Begin+00h	; 4bit, 0bch ; Stores a 2-byte hexadecimal number
gTemp_Buffer2:			.equ		gTb_Begin+01h	; 4bit, 0bdh
gTemp_Buffer1:			.equ		gTb_Begin+02h	; 4bit, 0beh
gTemp_Buffer0:			.equ		gTb_Begin+03h	; 4bit, 0bfh

gTemp_Buffer:			.equ		gTemp_Buffer0	; 0bfh
gTemp_Buffer_Begin:		.equ		gTemp_Buffer3	; 0bch
gTemp_Buffer_End:		.equ		gTemp_Buffer0	; 0bfh

; hex <-> bcd convert hex buffer(hb) variables
gHb_End:				.equ		0d0h
gHb_Begin:				.equ		gHb_End-04h		; 0cch
gHex_Buffer3:			.equ		gHb_Begin+00h	; 4bit, 0cch ; Stores a 2-byte hexadecimal number
gHex_Buffer2:			.equ		gHb_Begin+01h	; 4bit, 0cdh
gHex_Buffer1:			.equ		gHb_Begin+02h	; 4bit, 0ceh
gHex_Buffer0:			.equ		gHb_Begin+03h	; 4bit, 0cfh

gHex_Buffer:			.equ		gHex_Buffer0	; 0cfh
gHex_Buffer_Begin:		.equ		gHex_Buffer3	; 0cch
gHex_Buffer_End:		.equ		gHex_Buffer0	; 0cfh

; hex <-> bcd convert decimal buffer(db) variables
gDb_End:				.equ		0e0h
gDb_Begin:				.equ		gDb_End-06h		; 0dah
gDec_Buffer5:			.equ		gDb_Begin+00h	; 4bit  0dah ; no use
gDec_Buffer4:			.equ		gDb_Begin+01h	; 4bit, 0dbh ; Stores a 5-digit BCD number
gDec_Buffer3:			.equ		gDb_Begin+02h	; 4bit, 0dch
gDec_Buffer2:			.equ		gDb_Begin+03h	; 4bit, 0ddh
gDec_Buffer1:			.equ		gDb_Begin+04h	; 4bit, 0deh
gDec_Buffer0:			.equ		gDb_Begin+05h	; 4bit, 0dfh

gDec_Buffer:			.equ		gDec_Buffer0	; 0dfh
gDec_Buffer_Begin:		.equ		gDec_Buffer4	; 0dbh
gDec_Buffer_End:		.equ		gDec_Buffer0	; 0dfh

˵
ʮ gHex_Buffer3 ~ gHex_Buffer0 С
ʮƵBCD ֵ gDec_Buffer4 ~ gDec_Buffer0 С
ʱʮֵ gTemp_Buffer3 ~ gTemp_Buffer0 С
϶ıַ벻ҪĶҪĶ붨ΪһַƬ漸ֵַ
涨ĵֵַΪʮƵַΪ0cch, 0cdh, 0ceh, 0cfh
	ʮʱƶĵֵַΪ0dbh, 0dch, 0ddh, 0deh, 0dfh
	ʱĵֵַΪ0bch, 0bdh, 0beh, 0bfh
	
==================
˵
==================
cHex_Buffer:		.equ		gHex_Buffer_Begin	; hex buffer begin address value
cDec_Buffer:		.equ		gDec_Buffer_Begin	; decimal buffer begin address value
	
==================
̹˵
==================
hex2bcd_8bit:		Convert 1-byte(8-bit) hexadecimal to 2-digit BCD
					hex value range Ϊ[ 0h ~ 63h ]
					
hex2bcd_16bit:		Convert 2-byte(16-bit) hexadecimal to 5-digit BCD
					hex value range Ϊ[ 0h ~ ffffh ]
					
clear_buffer:		clear specified buffer

==================
Ӧ˵
==================
_main_hexbcd_test:
		; test hex -> bcd - 16bit
		nop
        ld      hl, #12h
        ld      ea, #34h
        nop
		
		nop
		call	hex2bcd_16bit
		nop
		
		
	ʮΪ1234hתõʮΪ4660
	
	input:
		h = #1h
		l = #2h
		e = #3h
		a = #4h
	output:
		x = #0
		h = #4
		l = #6
		e = #6
		a = #0
		
		
		; test hex -> bcd - 8bit
		nop
        ld      ea, #34h
        nop
		
		nop
		call	hex2bcd_8bit
		nop
		
		
	ʮΪ34hתõʮΪ52
	
	input:
		e = #3h
		a = #4h
	output:
		e = #5
		a = #2
