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 |
... | ... |
广告