8085程序交换内存中的一块字节
在这个程序中,我们将了解如何使用8085交换一块字节。
问题陈述
编写8085汇编语言程序来交换一块数据,其中块大小已知。
讨论
数据存储在地址8010H到8019H和9010H到9019H。地址8000H存储要交换的字节数。
逻辑非常简单,HL和DE寄存器对分别指向第一块和第二块数据。通过获取数据,我们只是交换每个内存位置的值。然后重复此过程以完全交换两块数据。
输入
| 地址 | 数据 |
|---|---|
| ... | ... |
| 8000 | 06 |
| ... | ... |
| 8010 | 00 |
| 8011 | 11 |
| 8012 | 22 |
| 8013 | 33 |
| 8014 | 44 |
| 8015 | 55 |
| ... | ... |
| 9010 | 84 |
| 9011 | 63 |
| 9012 | 12 |
| 9013 | 47 |
| 9014 | 48 |
| 9015 | AD |
| ... | ... |
流程图

程序
| 地址 | 十六进制代码 | 标签 | 助记符 | 注释 |
|---|---|---|---|---|
| F000 | 21, 10, 80 | LXI H, 8000H | 指向8000H获取字节计数 | |
| F003 | 4E | MOV C,M | 从内存加载计数 | |
| F004 | 21, 10, 80 | LXI H,8010H | 指向第一块地址 | |
| F007 | 11, 10, 90 | LXI D,9010H | 指向第二块地址 | |
| F00A | 46 | LOOP | MOV B, M | 将第一块的元素取到B |
| F00B | 1A | LDAX D | 将第二块的元素取到累加器 | |
| F00C | 77 | MOV M, A | 将累加器内容存储到第二块 | |
| F00D | 78 | MOV A, B | 将B加载到A | |
| F00E | 12 | STAX D | 存储到第二块 | |
| F00F | 23 | INX H | 指向第一块的下一个地址 | |
| F010 | 13 | INX D | 指向第二块的下一个地址 | |
| F011 | 0D | DCR C | 减少计数变量 | |
| F012 | C2, 0A, F0 | JNZ LOOP | 当块未完成时,跳转到LOOP | |
| F015 | 76 | HLT | 终止程序 |
输出
| 地址 | 数据 |
|---|---|
| ... | ... |
| 8010 | 84 |
| 8011 | 63 |
| 8012 | 12 |
| 8013 | 47 |
| 8014 | 48 |
| 8015 | AD |
| ... | ... |
| 9010 | 00 |
| 9011 | 11 |
| 9012 | 22 |
| 9013 | 33 |
| 9014 | 44 |
| 9015 | 55 |
| ... | ... |
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP