8085 微处理器多字节 BCD 数减法程序
在这里,我们将看到一个可以使用 8085 微处理器对多字节 BCD 数进行减法的程序。
问题陈述−
编写一个 8085 汇编语言程序来减去两个多字节 BCD 数。
讨论−
这些数字存储在内存中,并且还存储了一个额外的信息。它将向我们显示多字节 BCD 数的字节数。这里我们选择 3 字节 BCD 数。它们存储在 8001H 到 8003H 位置,另一个数字存储在 8004H 到 8006H 位置。8000H 位置保存字节数。在这种情况下,字节数为 03H。
对于减法,我们使用 10 的补码方法进行减法。
在这种情况下,数字为:672173 – 275188 = 376985
输入
地址 | 数据 |
---|---|
… | … |
8000 | 03 |
8001 | 73 |
8002 | 21 |
8003 | 67 |
8004 | 88 |
8005 | 51 |
8006 | 27 |
… | … |
流程图
程序
地址 | 十六进制代码 | 标签 | 助记符 | 注释 |
---|---|---|---|---|
F000 | 21, 00, 80 | LXI H,8000H | 指向获取计数的位置 | |
F003 | 4E | MOV C,M | 将计数获取到 C | |
F004 | 11, 01, 80 | LXI D,8001H | 指向第一个数字 | |
F007 | 21, 04, 80 | LXI H,8004H | 指向第二个数字 | |
F00A | 37 | STC | 设置进位标志 | |
F00B | 3E, 99 | LOOP | MVI A,99H | 将 99H 加载到 A |
F00D | CE,00 | ACI 00H | 将 00H 和进位与 A 相加 | |
F00F | 96 | SUB M | 从 A 减去 M | |
F010 | EB | XCHG | 交换 DE 和 HL | |
F011 | 86 | ADD M | 将 M 加到 A | |
F012 | 27 | DAA | 十进制调整 | |
F013 | 77 | MOV M,A | 将 A 存储到内存 | |
F014 | EB | XCHG | 交换 DE 和 HL | |
F015 | 23 | INX H | 通过 HL 指向下一个位置 | |
F016 | 13 | INX D | 通过 DE 指向下一个位置 | |
F017 | 0D | DCR C | 将 C 减 1 | |
F018 | C2, 0B, F0 | JNZ LOOP | 如果 Z = 0,则跳转到 LOOP | |
F01B | 76 | HLT | 终止程序 |
输出
地址 | 数据 |
---|---|
… | … |
8001 | 85 |
8002 | 69 |
8003 | 37 |
… | … |
广告