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 |
| . . . | . . . |
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP