在本节中,我们将看到如何使用Zilog Z-80微处理器将数据块移动到另一个位置。有一个假设,即源和目标之间有足够的距离。因此,块是不重叠的。基本上,块移动不是精确的移动,它是将数据复制到其他位置。
块中的项目数在位置5000H处给出,而块在位置5050H处给出。
因此,在移动之前,内存中的项目看起来像这样。
| 地址 | 值 |
|---|---|
| 5000小时 | 04小时 |
| 。 。 。 | |
| 5050小时 | 89小时 |
| 5051H | 7AH |
| 5052H | 2FH |
| 5053H | 56小时 |
| 。 。 。 |
现在,我们正在8000H位置编写程序,以将块内容移动到其他位置。
| 地址 | 十六进制代码 | 标签 | 助记符 | 评论 |
|---|---|---|---|---|
| 8000 | 21 00 50 | LD HL,5000小时 | 向HL对加载5000H | |
| 8003 | DD 21 50 50 | LD IX,5050H | 将索引寄存器设置为5050H | |
| 8007 | DD 7E 00 | 循环 | LD A,(IX + 00H) | 用IX + 00H加载Acc |
| 800A | DD 77 20 | LD(IX + 20H),A | IX + 20H时Acc的负载量 | |
| 800D | DD 23 | 第九届 | 增加索引寄存器 | |
| 800F | 35 | DEC(HL) | 减少存储位置的内容,以HL对指向 | |
| 8010 | C2 07 80 | JP NZ,LOOP | 零标志关闭时跳转到循环 | |
| 8013 | 76 | 停止 | 停止程序 |
输出结果
| 地址 | 值 |
|---|---|
| 5000小时 | 04小时 |
| 。 。 。 | |
| 5050小时 | 89小时 |
| 5051H | 7AH |
| 5052H | 2FH |
| 5053H | 56小时 |
| 。 。 。 | |
| 5070小时 | 89小时 |
| 5071H | 7AH |
| 5072H | 2FH |
| 5073H | 56小时 |
| 。 。 。 |