8085程序用于加两个16位数
在本程序中,我们将了解如何添加两个16位数。
问题陈述
编写8085汇编语言程序,以添加存储在内存位置8000H – 8001H和8002H – 8003H中的两个16位数。
讨论
在本程序中,我们使用HL和DE寄存器对指向操作数地址。然后使用ADD运算符添加LSBytes,然后使用ADC运算符添加MSBytes以考虑进位标志结果。16位结果将存储在BC寄存器中,并且通过检查加法后的进位位,我们可以简单地将1放入内存中。
我们取两个数字BCAD + FE2D = 1BADA
输入
| 地址 | 数据 |
|---|---|
| ... | ... |
| 8000 | AD |
| 8001 | BC |
| 8002 | 2D |
| 8003 | FE |
| ... | ... |
流程图

程序
| 地址 | 十六进制代码 | 标签 | 助记符 | 注释 |
|---|---|---|---|---|
| F000 | 21, 00, 80 | LXI H,8000H | 指向第一个操作数的LSB | |
| F003 | 11, 02, 80 | LXI D,8002H | 指向第二个地址的LSB | |
| F006 | 1A | LDAX D | 将Acc加载到DE指向的内容 | |
| F007 | 86 | ADD M | 将HL指向的内存元素与Acc相加 | |
| F008 | 4F | MOV C, A | 将LSB结果存储在C中 | |
| F009 | 23 | INX H | 指向第一个操作数的下一个字节 | |
| F00A | 13 | INX D | 指向第二个操作数的下一个字节 | |
| F00B | 1A | LDAX D | 将Acc加载到DE指向的内容 | |
| F00C | 8E | ADC M | 将HL指向的内存元素与Acc + Carry相加 | |
| F00D | 47 | MOV B,A | 将MSB存储在B中 | |
| F00E | 60 | MOV H,B | 将B移动到H | |
| F00F | 69 | MOV L,C | 将C移动到L | |
| F010 | 22, 50, 80 | SHLD 8050H | 将结果存储在8050H和8051H中 | |
| F013 | D2, 1B, F0 | JNC DONE | 跳到结束 | |
| F016 | 3E, 01 | MVI A, 01H | 将1加载到Acc | |
| F018 | 32, 52, 80 | STA 8052H | 将Acc内容存储到8052H | |
| F01B | 76 | DONE | HLT | 终止程序 |
输出
| 地址 | 数据 |
|---|---|
| ... | ... |
| 8050 | DA |
| 8051 | BA |
| 8052 | 01 |
| ... | ... |
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP