12-bit HEX to BCD Convertor
Written by Amol Shah, on Aug-2008
Views 813

This subroutine converts 12 bit hexadecimal number into its equivalent BCD number. Since the number to be converted is 12 bit total two bytes will be required to represent it. And the converted number will be maximum 4 byte but since the output is in BCD two memory locations will be used to store the final result. The number to be converted is stored in R6 (MSB) & R7 (LSB) whereas the converted BCD number is stored in R0 (MSB) & R1 (LSB).

First we work on the HEX LSB (R7) & convert it into BCD as stated in 8-bit HEX to BCD convertor. Then we check if the HEX MSB (R6) is 0 if not zero we add 256 to the BCD & decrement the HEX MSB (R6) until it becomes zero.

hextobcd:

                mov r0,#00h

                mov r1,#00h

                clr c

                mov a,r7

                mov b,#100                        //Divide LSB by 100        

                div ab

                mov r0,a                              //save the 100th place

                mov a,b

                mov b,#10                           //Divide LSB by 10

                clr c

                div ab

                swap a

                orl a,b

                mov r1,a                              //save the units & tenth place

                mov a,r6

                cjne a,#00h,c1_hextobcd             //Check if the MSB is 0 if not then continue

                ret

 

//Add 256 to the BCD number & decrement the HEX MSB by 1 until it becomes 0

  

c1_hextobcd:

                clr c

                mov a,r1

                add a,#56h                                         

                da a

                mov r1,a

                jnc c2_hextobcd

                clr c

                mov a,r0

                add a,#01h

                da a

                mov r0,a

c2_hextobcd:

                clr c

                mov a,r0

                add a,#02h

                da a

                mov r0,a

                djnz r6,c1_hextobcd

                ret                         



Add this page to your favorite Social Bookmarking websites
Reddit! Del.icio.us! JoomlaVote! Google! Live! Facebook! StumbleUpon! Yahoo! Free social bookmarking plugins and extensions for Joomla! websites!
Quote this article in website Favoured Print Send to friend Related articles Save this to del.icio.us

Users' Comments (0) RSS feed comment

No comment posted

Add your comment



mXcomment 1.0.5 © 2007-2009 - visualclinic.fr
License Creative Commons - Some rights reserved
 
< Prev   Next >
Home arrow Code Library arrow 12-bit HEX to BCD Convertor