8085程序用于减去两个8位数,包含或不包含借位
在这个程序中,我们将了解如何使用8085微处理器减去两个8位数。
问题陈述
编写8085汇编语言程序,用于减去两个8位数,包含或不包含借位,并将结果存储在地址8050H和8051H。
讨论
在8085中,SUB指令使用2的补码方法进行减法。当第一个操作数较大时,结果为正数。完成减法后,它不会启用进位标志。当结果为负数时,结果将以2的补码形式表示,并且进位标志将被启用。
我们正在使用地址8000H和8001H处的两个数字。当数字为78H和5DH时,结果将为(78 – 5D = 1B),当数字为23H和CFH时,结果将为(23 – CF = 154)。这里1表示数字为负数。实际结果是54H。它以2的补码形式表示。
输入
第一个输出
地址 | 数据 |
---|---|
. . . | . . . |
8000 | 78 |
8001 | 5D |
. . . | . . . |
第二个输出
地址 | 数据 |
---|---|
. . . | . . . |
8000 | 23 |
8001 | CF |
. . . | . . . |
流程图
地址 | 十六进制代码 | 标签 | 助记符 | 注释 |
---|---|---|---|---|
F000 | 0E, 00 | MVI C,00H | 清零C寄存器 | |
F002 | 21, 00, 80 | LXI H,8000H | 加载初始地址以获取操作数 | |
F005 | 7E | MOV A,M | 将内存元素加载到累加器 | |
F006 | 23 | INX H | 指向下一个位置 | |
F007 | 46 | MOV B, M | 将第二个操作数加载到B | |
F008 | 90 | SUB B | 从A中减去B | |
F009 | D2, 0D, F0 | JNC STORE | 当CY = 0时,跳转到STORE | |
F00C | 0C | INR C | 将C加1 | |
F00D | 21, 50, 80 | STORE | LXI H,8050H | 加载目标地址 |
F010 | 77 | MOV M, A | 存储结果 | |
F011 | 23 | INX H | 指向下一个位置 | |
F012 | 71 | MOV M, C | 存储借位 | |
F013 | 76 | HLT | 终止程序 |
输出
第一个输出
地址 | 数据 |
---|---|
. . . | . . . |
8050 | 1B |
8051 | 00 |
. . . | . . . |
第二个输出
地址 | 数据 |
---|---|
. . . | . . . |
8050 | 54 |
8051 | 01 |
. . . | . . . |
广告