;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Copy right Notice;;;;;;;;;;;;;;;;
;;This program is for personal use only.You may change/modify it regarding ur requirements.
;;This program has been tested and verfied, but in case of any queries, feel free to
;;email(mail_to_salman@yahoo.com) me.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;This routine is for 16 bit Hex to BCD conversion;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;Accepts a 16 bit binary number in R1,R2 and returns 5 digit BCD in R7,R6,R5,R4,R3(
upto 64K )
Hex2BCD:
MOV R1,#0fFH ; MSByte
MOV R2,#0FFH ; LSByte
MOV R3,#00D
MOV R4,#00D
MOV R5,#00D
MOV R6,#00D
MOV R7,#00D
MOV B,#10D
MOV A,R2
DIV AB
MOV R3,B ;
MOV B,#10 ; R7,R6,R5,R4,R3
DIV AB
MOV R4,B
MOV R5,A
CJNE R1,#0H,HIGH_BYTE ; CHECK FOR HIGH BYTE
SJMP ENDD
HIGH_BYTE:
MOV A,#6
ADD A,R3
MOV B,#10
DIV AB
MOV R3,B
ADD A,#5
ADD A,R4
MOV B,#10
DIV AB
MOV R4,B
ADD A,#2
ADD A,R5
MOV B,#10
DIV AB
MOV R5,B
CJNE R6,#00D,ADD_IT
SJMP CONTINUE
ADD_IT:
ADD A,R6
CONTINUE:
MOV R6,A
DJNZ R1,HIGH_BYTE
MOV B, #10D
MOV A,R6
DIV AB
MOV R6,B
MOV R7,A
ENDD: SJMP $