Exchange of blocks in Z-80



In this section we will see how we can use the Zilog Z-80 Microprocessor to Exchange the contents of each element from two different blocks.

The number of items in each block are given at location 5000H, and the blocks are at position 5050H and 5070H.

So before swapping the items in the memory is looking like this

Address Value
5000H 04H

.
.
.
5050H 89H
5051H 7AH
5052H 2FH
5053H 56H

.
.
.
5070H AFH
5071H A9H
5072H FBH
5073H 21H

.
.
.

Now, we are writing a program at location 8000H to exchange the block contents.

Program

Address Hex Codes Labels Mnemonics Comments
8000 21 00 50
LD HL, 5000H Load the HL pair with 5000H
8003 DD 21 50 50
LD IX, 5050H Set the index register with 5050H
8007 DD 7E 00
LD A, (IX+00H) Load Acc with IX + 00H
800A DD 46 20
LD B, (IX+20H) Load B with IX + 20H
800D DD 70 00 LOOP LD (IX+00H), B Load B register content at IX + 00H
8010 DD 77 20
LD (IX+20H), A Load Acc content at IX + 20H
8013 DD 23
INC IX Increase the IX register
8015 35
DEC (HL) Decrease the memory content, pointer by HL pair
8016 C2 07 80
JP NZ, LOOP Jump to Loop, when zero flag is off
8019 76
HALT Stop the program

Output

Address Value
5000H 04H

.
.
.
5050H AFH
5051H A9H
5052H FBH
5053H 21H

.
.
.
5070H 89H
5071H 7AH
5072H 2FH
5073H 56H

.
.
.
Updated on: 2019-07-30T22:30:24+05:30

213 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements