Home     Projects     Micro     Tools     Delphi     Developer     Site map
HOME  
 
 
       
converts 24-bit binary to 4-byte BCD format

DOWNLOAD    MAIN
; It uses Gorner algorithm:
; Num10=(...((0+bitn-1)*2+bitn-2)*2+...bit1)*2+bit0 
; INPUT  : (MSB)R1/R2/R3(LSB)    - bin24
; OUTPUT : (MSB)R4/R5/R6/R7(LSB) - bcd4
; MODIFY : R0,ACC,PSW and destroys bin24
; CODE size: 59 bytes
; TIME: 689...1073(max) machine cycles
; NOTE: no zero check implemented 
;           (see another source below)
;
;
SUB_BIN24TOBCD4:
; prepare result area
	MOV	R4,#0
	MOV	R5,#0
	MOV	R6,#0
	MOV	R7,#0
	MOV	R0,#24	; number of bits
	JMP	SUB_BIN24TOBCD4_0
SUB_BIN24TOBCD4_C:
; multiple BCD4 by 2
	MOV	A,R7
	ADD	A,R7
	DA	A
	MOV	R7,A
	MOV	A,R6
	ADDC	A,R6
	DA	A
	MOV	R6,A
	MOV	A,R5
	ADDC	A,R5
	DA	A
	MOV	R5,A
	MOV	A,R4
	ADDC	A,R4
	DA	A
	MOV	R4,A
SUB_BIN24TOBCD4_0:
; roll left bin24
	MOV	A,R3
	RLC	A
	MOV	R3,A
	MOV	A,R2
	RLC	A
	MOV	R2,A
	MOV	A,R1
	RLC	A
	MOV	R1,A
	JNC	SUB_BIN24TOBCD4_1; bit=0
; bit=1 so increment BCD4 by 1
	MOV	A,#1
	ADD	A,R7
	DA	A
	MOV	R7,A
	CLR	A
	ADDC	A,R6
	DA	A
	MOV	R6,A
	CLR	A
	ADDC	A,R5
	DA	A
	MOV	R5,A
	CLR	A
	ADDC	A,R4
	DA	A
	MOV	R4,A
SUB_BIN24TOBCD4_1:
	DJNZ	R0,SUB_BIN24TOBCD4_C
	RET
		  
Copyright(c) 2005-2010 sixca.com, All rights reserved.
Best view @ 800X600, IE 6.0 up    Terms of Use  Privacy Policy