Z-80 中的块交换
在本节中,我们将了解如何使用 Zilog Z-80 微处理器交换两个不同块中每个元素的内容。
每个块中的项目数量在 5000H 位置给出,块位于 5050H 和 5070H 位置。
因此,在交换内存中的项目之前,看起来像这样
地址 | 值 |
---|---|
5000H | 04H |
. . . | |
5050H | 89H |
5051H | 7AH |
5052H | 2FH |
5053H | 56H |
. . . | |
5070H | AFH |
5071H | A9H |
5072H | FBH |
5073H | 21H |
. . . |
现在,我们正在 8000H 位置编写一个程序来交换块内容。
程序
地址 | 十六进制代码 | 标签 | 助记符 | 注释 |
---|---|---|---|---|
8000 | 21 00 50 | LD HL, 5000H | 将 HL 对加载为 5000H | |
8003 | DD 21 50 50 | LD IX, 5050H | 将索引寄存器设置为 5050H | |
8007 | DD 7E 00 | LD A, (IX+00H) | 将累加器加载为 IX + 00H | |
800A | DD 46 20 | LD B, (IX+20H) | 将 B 加载为 IX + 20H | |
800D | DD 70 00 | LOOP | LD (IX+00H), B | 将 B 寄存器内容加载到 IX + 00H |
8010 | DD 77 20 | LD (IX+20H), A | 将累加器内容加载到 IX + 20H | |
8013 | DD 23 | INC IX | 增加 IX 寄存器 | |
8015 | 35 | DEC (HL) | 减少内存内容,由 HL 对指向的指针 | |
8016 | C2 07 80 | JP NZ, LOOP | 当零标志关闭时,跳转到循环 | |
8019 | 76 | HALT | 停止程序 |
输出
地址 | 值 |
---|---|
5000H | 04H |
. . . | |
5050H | AFH |
5051H | A9H |
5052H | FBH |
5053H | 21H |
. . . | |
5070H | 89H |
5071H | 7AH |
5072H | 2FH |
5073H | 56H |
. . . |
广告