Statement: Convert the HEX number in memory to its equivalent decimal number
Home
8085 Forum
8085 Free Projects
8085 Free Programs
8085 Tutorials
8085 details
Interfacing Techniques
Electronic Tutorials
Electronic Projects
Assembler/ IDE
Datasheets
Guest Book
About Me
Source Program:

       LXI H, 4150                ; Point to data
       LXI B, 0000                ; Initialize hundreds= 0, Tens=0
       MOV A, M                ; Get hex data to A
LOOP: SUI        64
        JC LOOP 1
        INR B                        ; hundreds= hundreds+1
        JMP LOOP
LOOP 1: ADI 64                ; if subtracted extra, add it clear carry flag
LOOP 2: SUI        0A
         JC LOOP 3
         INR C                ; Tens=tens+1
         JMP LOOP 2
LOOP 3: ADI 0A                ; If subtracted extra, add it again
       INX H                        ; A = Units
       MOV M, B                ; store hundreds
       MOV B, A                ; Combine Tens in C &
       MOV A, C                ; Units in A to form a
       RLC                        ; Single 8-bit number
       RLC
       RLC
       RLC
       ADD        B        
       INX H        
       MOV M, A                ; Store tens & Units
       HLT



Note: In this experiment the number is converted to its equivalent decimal number using the following logic.  First count the number of hundreds, the number of tens & units present in that hex number.  Then add up to get the equivalent decimal number. 
Converting A9 we get:
A9 /64=45        Hundreds = 01
Since 64(100 decimal) cannot be subtracted from 45 no. of hundreds = 01.  Now count tens
45/0A=3B        Tens = 01
Now from 09, 0A cannot be subtracted.  Hence tens = 06 the decimal equivalent of A9 is 169.