8085 program to move blocks of bits from source location to a destination location
Problem – Write a program to move blocks of bits from source location starting at 2500 to destination location starting from 2600 where size of blocks is 05 bytes. Example – Algorithm –
- Load register pair H-L with the address 2500H
- Load register pair D-E with the address 2600H
- Move the content at memory location into accumulator
- Store the content of accumulator into memory pointed by D-E
- Increment value of register pair H-L and D-E by 1
- Decrements value of register C by 1
- If zero flag not equal to 1, go to step 3
- Stop
Program –
Memory |
Mnemonics |
Operands |
Comment |
2000 |
MVI |
C, 05 |
[C] <- 05 |
2002 |
LXI |
H, 2500 |
[H-L] <- 2500 |
2005 |
LXI |
D, 2600 |
[D-E] <- 2600 |
2008 |
MOV |
A, M |
[A] <- [[H-L]] |
2009 |
STAX |
D |
[A] -> [[D-E]] |
200A |
INX |
H |
[H-L] <- [H-L] + 1 |
200B |
INX |
D |
[D-E] <- [D-E] + 1 |
200C |
DCR |
C |
[C] <- [C] – 1 |
200D |
JNZ |
2008 |
Jump if not zero to 2008 |
2010 |
HLT |
|
Stop |
Explanation – Registers A, D, E, H, L, C are used for general purpose:
- MOV is used to transfer the data from memory to accumulator (1 Byte)
- LXI is used to load register pair immediately using 16-bit address (3 Byte instruction)
- MVI is used to move data immediately into any of registers (2 Byte)
- STAX is used to store accumulator into register pair indirectly (3 Byte instruction)
- DCR is used to decrease register by 1 (1 Byte instruction)
- INX is used to increase register pair by 1 (1 Byte instruction)
- JNZ is used to jump if not zero to given memory location (3 Byte instruction)
- HLT is used to halt the program
Advantages:
- The program is simple and easy to understand, making it useful for teaching purposes.
- It can be used to efficiently move blocks of data within a memory, such as copying data from one buffer to another, or shifting bits within a data structure.
- The program is customizable, as the source and destination addresses, as well as the block size, can be easily changed.
Disadvantages:
- The program is not optimized for speed, as it uses multiple instructions to move each byte of data.
- It is not suitable for moving large blocks of data, as it requires a loop that iterates over each byte individually.
- The program does not check for errors or boundary conditions, such as when the source or destination address is outside the valid memory range.
Last Updated :
11 Apr, 2023
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...