8085微处理器多字节BCD数减法程序
现在让我们来看一个Intel 8085微处理器的程序。在这个程序中,我们将学习如何减去多字节BCD数。
问题陈述
编写8085汇编语言程序以减去两个多字节BCD数。
讨论
数字存储在内存中,并存储一个附加信息。它将显示多字节BCD数的字节数。这里我们选择3字节BCD数。它们存储在8001H到8003H位置,另一个数存储在8004H到8006H位置。8000H位置保存字节计数。在这种情况下,字节计数为03H。
对于减法,我们使用十的补码方法进行减法。
在这种情况下,数字为: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 |
. . . | . . . |
广告