
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
Check for Two Out of Five Code in 8085 Microprocessor
Here we will see one 8085 Microprocessor program. This program will help us to check a given value is a valid 2 out of 5 code or not.
Problem Statement−
Write an 8085 Assembly language program to check whether a given number is two out of five code or not. The number is stored at location 8000H.
Discussion−
he checking of 2 out of 5 code is simple. At first we have to check the first three bits are 0 or not. If they are 0, then we will check next five bits. If there are exactly two 1s in these 5-bits, then it is a valid 2 out of 5 code.
Here at first we are ANDing the number by (1110 0000), if the first three bits are 0, then the result will be 0, after that we are checking the number of 1s by using rotating operation. Using rotation operation if the carry flag is enabled, then the count will be increased. Thus the total count of 1s will be reflected.
his program will store FFH into location 8050H if the number is valid 2 out of 5 code, otherwise it will store 00H into 8050H.
Input
First Input
Address |
Data |
---|---|
. . . |
. . . |
8000 |
12 |
. . . |
. . . |
Second Input
Address |
Data |
---|---|
. . . |
. . . |
8000 |
13 |
. . . |
. . . |
Third Input
Address |
Data |
---|---|
. . . |
. . . |
8000 |
03 |
. . . |
. . . |
Flow Diagram
Program −
Address |
HEX Codes |
Labels |
Mnemonics |
Comments |
---|---|---|---|---|
F000 |
3A, 00, 80 |
|
LDA 8000H |
Load the number from memory |
F003 |
67 |
|
MOV H,A |
Load A to H |
F004 | 2E, 00 |
MVI L,00H |
Clear register L |
|
F006 |
E6, E0 |
|
ANI E0H |
AND Acc and 11100000b |
F008 |
C2, 21, F0 |
|
JNZ DONE |
If Z = 0, go to Done |
F00B |
7C |
|
MOV A,H |
Load H to A |
F00C |
0E, 05 |
|
MVI C,05H |
Load C with 05H for counting |
F00E |
16, 00 |
|
MVI D,00H |
Clear register D |
F010 |
0F |
LOOP |
RRC |
Rotate acc content to the right |
F011 |
D2, 15, F0 |
|
JNC SKIP |
If CY = 0, jump to skip |
F014 |
14 |
|
INR D |
Increase D by 1 |
F015 |
0D |
SKIP |
DCR C |
Decrease C by 1 |
F016 |
10, F0 |
|
JNZ LOOP |
Jump to LOOP |
F019 |
3E, 02 |
|
MVI A,02H |
Initialize A with 02H |
F01B |
BA |
|
CMP D |
Compare D with A |
F01C |
C2, 21, F0 |
|
JNZ DONE |
if Z = 0, go to DONE |
F01F |
2E, FF |
|
MVI L,FFH |
Load L with FFH |
F021 |
7D |
DONE |
MOV A,L |
Take result from L to A |
F022 |
32, 50, 80 |
|
STA 8050H |
Sore result at 8050H |
F025 |
76 |
|
HLT |
Terminate the program |
Output
First Output
Address |
Data |
---|---|
… |
… |
8050 |
FF |
… |
… |
Second Output
Address |
Data |
---|---|
… |
… |
8050 |
00 |
… |
… |
Third Output
Address |
Data |
---|---|
… |
… |
8050 |
FF |
… |
… |