# Program to convert a 16-bit binary number to BCD in 8085 Microprocessor

Here we will see one 8085 Microprocessor program. This program will be used to convert 16-bit binary data to BCD data.

Problem Statement

Write an 8085 Assembly language program to convert 16-bit binary data to BCD data. The binary data is stored at location 8000H and 8001H.

Discussion

This problem is solved by implementing 16-bit counter. We are storing the 16-bit number at first, then decreasing the numbers one by one, and increasing the decimal value by adjusting the decimal value. To increase the value, we can use the INR instruction, but INR instruction does not affect the carry flag. So here we are using ADI 01H for increasing it by 1.

The binary number is taken from location 8000H and 8001H, and the final result is stored at location 8050H to 8052H.

Data

8000
FF
8001
FF

## Program

HEX Codes
Labels
Mnemonics
F000
2A, 00, 80

LHLD 8000H
Initialize HL with 16-bit data
F003
11, 00, 00

LXI D,0000H
Clear DE register
F006
AF

XRA A
Clear A register
F007
C6, 01
LOOP
Add 01 with A
F009
21

DAA
F00A
47

MOV B,A
Store A to B
F00B
D2, 1B, F0

JNC SKIP
If CY = 0, go to skip
F00E
7B

MOV A,E
Load E to A
F00F
C6, 01

Add 01H with A
F011
27

DAA
F012
5F

MOV E,A
Get E from A
F013
D2, 1B,F0

JNC SKIP
If CY = 0, go to skip
F016
7A

MOV A,D
Take D to A
F017
C6, 01

Add 01H with A
F019
27

DAA
F01A
57

MOV D,A
Load A to D
F01B
2B
SKIP
DCX H
Decrease DE
F01C
7C

MOV A,H
Load H to A
F01D
85

ORA L
OR A and L
F01E
78

MOV A,B
Load B to A
F01F
C2, 07, F0

JNZ LOOP
F022
EB

XCHG
Exchange DE and HL
F023
22, 51, 80

SHLD 8051H
Store HL content into memory
F026
32, 50, 80

STA 8050H
Store A to memory
F029
76

HLT
Terminate the program