
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
8085 program to unpack 16-bit BCD, and store consecutive locations
Here we will see we can take 16-bit BCD data from memory and unpack it, then store into memory using 8085.
Problem Statement
Write 8085 program to take 16-bit BCD number from memory then store each digit by unpacking into different locations.
Discussion
To solve this problem, we will create one subroutine, that can unpack 1-byte BCD number and store into memory, then we will use that subroutine for two times to store 16-bit data. The subroutine will cut the numbers by masking upper nibble and lower nibble, and store into memory.
Input
1234 in the DE register pair
Flow Diagram
Program
Address |
HEX Codes |
Labels |
Mnemonics |
Comments |
---|---|---|---|---|
F000 |
31, 00, FC |
|
LXI SP,FC00 |
Initialize stack pointer |
F003 |
11, 34, 12 |
|
LXI D,ABCD |
load 16-bit number |
F006 |
21, 00, 90 |
|
LXI H,9000 |
point to destination address |
F009 |
7B |
|
MOV A,E |
take E into A |
F00A |
CD, 13, F0 |
|
CALL UNPACK |
Unpack lower byte and store |
F00D |
23 |
|
INX H |
point to next location |
F00E |
7A |
|
MOV A,D |
take upper byte |
F00F |
CD, 13, F0 |
|
CALL UNPACK |
unpack upper byte and store |
F012 |
76 |
|
HLT |
Terminate the program |
F013 |
D5 |
UNPACK |
PUSH D |
push DE into stack |
F014 |
57 |
|
MOV D,A |
store number into D |
F015 |
E6, F0 |
|
ANI 0FH |
mask upper nibble |
F017 |
77 |
|
MOV M,A |
store lower nibble |
F018 |
7A |
|
MOV A,D |
take the number again |
F019 |
E6, F0 |
|
ANI F0H |
mask lower nibble |
F01B |
07 |
|
RLC |
rotate left |
F01C |
07 |
|
RLC |
rotate left |
F01D |
07 |
|
RLC |
rotate left |
F01E |
07 |
|
RLC |
rotate left |
F01F |
23 |
|
INX H |
point to next location |
F020 |
77 |
|
MOV M,A |
store upper nibble into memory |
F021 |
D1 |
|
POP D |
pop DE from stack |
F022 |
C9 |
|
RET |
Return from subroutine |
Output
Address |
Data |
---|---|
… |
… |
9000 |
04 |
9001 |
03 |
9002 |
02 |
9003 |
01 |
… |
… |
Advertisements