8-bit HEX to BCD convertor
This subroutine converts 8 bit Hexadecimal number into its equivalent BCD value. The number to be converted should be in the Accumulator. The output BCD number is stored in R0 & R1. R0 is used to save the MSB i.e. the hundreds place & R1 stores the LSB i.e. the Tens & Units place.
|
|
hextobcd:
|
|
mov r0,#00h |
|
mov r1,#00h |
|
cjne a,#00h,c1_hextobcd |
//If number is not 0 then continue |
ret |
|
|
|
c1_hextobcd:
|
|
clr c |
|
mov b,#100 |
//First divide by 100 |
div ab |
|
mov r0,a |
//save MSB in R0 |
clr c |
|
mov a,b |
|
mov b,#10 |
//Divide by 10 |
div ab |
|
swap a |
|
mov r1,a |
//save the tens place in the Higher nibble of R1 |
mov a,b |
|
orl a,r1 |
|
mov r1,a |
// save the tens place in the Lower nibble of R1 |
ret |
|
|
|
.
Written by Administrator
Administrator
Administrator