8085 无重叠块移动
在这个程序中,我们将了解如何将数据块从一个位置移动到另一个位置。
问题陈述
编写 8085 汇编语言程序以移动数据块。假设这些块不重叠。给出块大小,块从 X 开始,我们必须将其移动到位置 Y。
讨论
无重叠块移动相对来说是一项简单的任务。这里块从位置 X 开始,我们必须将其移动到位置 Y。位置 Y 远离 X。所以 Y > X + 块大小。
在这个程序中,数据存储在 8010H 位置,我们将将其放置在 9010H。块大小存储在 8000H 位置。
我们将源地址加载到 HL 对中,将目标地址加载到 DE 寄存器对中。我们只是从源获取数据并将其放置在目标位置。
输入
地址 | 数据 |
---|---|
. . . | . . . |
8000 | 07 |
. . . | . . . |
8010 | 11 |
8011 | 22 |
8012 | 33 |
8013 | 44 |
8014 | 55 |
8015 | 66 |
8016 | 77 |
. . . | . . . |
流程图
程序
地址 | 十六进制代码 | 标签 | 助记符 | 注释 | |
---|---|---|---|---|---|
F000 | 21,00, 80 | LXIH, 8000H | 加载查找块大小的位置 | ||
F003 | 4E | MOVC, M | 将块大小存储到 C 寄存器中 | ||
F004 | 21,10, 80 | LXI H, 8010H | 将源地址加载到 HL 对中 | ||
F007 | 11,10, 90 | LXI D, 9010H | 将目标地址加载到 DE 对中 | ||
F00A | 7E | LOOP | MOV A, M | 将累加器加载到内存元素中 | |
F00B | 12 | STAX D | 将累加器内容存储到 D 指向的内存中 | ||
F00C | 13 | INX D | 增加 DE 寄存器对 | ||
F00D | 23 | INX H | 增加 HL 寄存器对 | ||
F00E | 0D | DCR C | 减少 C 寄存器 | ||
F00F | C2,0A, F0 | JNZ LOOP | 跳转到循环 | ||
F012 | 76 | HLT | 终止程序 |
输出
地址 | 数据 |
---|---|
. . . | . . . |
8000 | 07 |
. . . | . . . |
8010 | 11 |
8011 | 22 |
8012 | 33 |
8013 | 44 |
8014 | 55 |
8015 | 66 |
8016 | 77 |
. . . | . . . |
9010 | 11 |
9011 | 22 |
9012 | 33 |
9013 | 44 |
9014 | 55 |
9015 | 66 |
9016 | 77 |
. . . | . . . |
广告