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.

Input

Address
Data


8000
FF
8001
FF



Flow Diagram

Program

Address
HEX Codes
Labels
Mnemonics
Comments
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
ADI 01H
Add 01 with A
F009
21


DAA
Adjust decimal
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


ADI 01H
Add 01H with A
F011
27


DAA
Decimal adjust
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


ADI 01H
Add 01H with A
F019
27


DAA
Adjust decimal
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
Jump to 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

 

Output

Address
Data


8050
35
8051
55
8052
06


raja
Published on 09-Oct-2019 10:20:09
Advertisements