
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
Subtraction of Multi-Byte BCD Numbers in 8085 Microprocessor
Here we will see one program that can perform subtraction for multi-byte BCD numbers using 8085 microprocessor.
Problem Statement −
Write an 8085 Assembly language program to subtract two multi-byte BCD numbers.
Discussion −
The numbers are stored into memory, and one additional information is stored. It will show us the byte count of the multi-byte BCD number. Here we are choosing 3-byte BCD numbers. They are stored at location 8001H to 8003H, and another number is stored at location 8004H to 8006H. The location 8000H is holding the byte count. In this case the byte count is 03H.
For the subtraction we are using the 10’s complement method for subtraction.
In this case the numbers are: 672173 – 275188 = 376985
Input
Address |
Data |
---|---|
… |
… |
8000 |
03 |
8001 |
73 |
8002 |
21 |
8003 |
67 |
8004 |
88 |
8005 |
51 |
8006 |
27 |
… |
… |
Flow Diagram
Program
Address |
HEX Codes |
Labels |
Mnemonics |
Comments |
---|---|---|---|---|
F000 |
21, 00, 80 |
|
LXI H,8000H |
Point to get the count |
F003 |
4E |
|
MOV C,M |
Get the count to C |
F004 |
11, 01, 80 |
|
LXI D,8001H |
Point to first number |
F007 |
21, 04, 80 |
|
LXI H,8004H |
Point to second number |
F00A |
37 |
|
STC |
Set the carry flag |
F00B |
3E, 99 |
LOOP |
MVI A,99H |
Load 99H into A |
F00D |
CE,00 |
|
ACI 00H |
Add 00H and Carry with A |
F00F |
96 |
|
SUB M |
Subtract M from A |
F010 |
EB |
|
XCHG |
Exchange DE and HL |
F011 |
86 |
|
ADD M |
Add M to A |
F012 |
27 |
|
DAA |
Decimal adjust |
F013 |
77 |
|
MOV M,A |
Store A to memory |
F014 |
EB |
|
XCHG |
Exchange DE and HL |
F015 |
23 |
|
INX H |
Point to next location by HL |
F016 |
13 |
|
INX D |
Point to next location by DE |
F017 |
0D |
|
DCR C |
Decrease C by 1 |
F018 |
C2, 0B, F0 |
|
JNZ LOOP |
Jump to LOOP if Z = 0 |
F01B |
76 |
|
HLT |
Terminate the program |
Output
Address |
Data |
---|---|
… |
… |
8001 |
85 |
8002 |
69 |
8003 |
37 |
… |
… |
Advertisements