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的补码形式表示。
Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.
输入
第一个输入
地址 | 数据 |
---|---|
. . . | . . . |
8000 | 78 |
8001 | 8000H |
. . . | . . . |
78H
地址 | 数据 |
---|---|
. . . | . . . |
8000 | 23 |
8001 | 第二个输入 |
. . . | . . . |
8001H
5DH
地址 | 流程图 | 程序 | 十六进制代码 | 标签 |
---|---|---|---|---|
助记符 | 注释 | F000 | 0E,00 | |
MVIC,00H | 21,00, 80 | 清除C寄存器 | F002 | |
21,00,80 | LXIH,8000H | 加载初始地址以获取操作数 | F005 | |
7E | 23 | MOVA, M | 将累加器A加载内存单元 | |
F006 | 46 | 03 | INX H | |
指向下一个位置 | 90 | F007 | 7E | |
MOVB, M | 将B寄存器加载内存单元 | F008 | 98 | |
SUB B | 从A中减去B | F009 | D2,0D, F0 | |
JNC STORE | 21,50, 80 | 当CY = 0时,跳转到STORE | F00C | 0C |
INR C | 77 | C加1 | F00D | |
STORE | 23 | MOVA, M | 将累加器A加载内存单元 | |
21,50,80 | 71 | LXIH,8050H | 加载目标地址 | |
F010 | 76 | 77 | MOVM, A |
存储结果
F011
地址 | 数据 |
---|---|
. . . | . . . |
8050 | 03 |
8051 | 00 |
. . . | . . . |
INX H
地址 | 数据 |
---|---|
. . . | . . . |
8050 | 54 |
8051 | 01 |
. . . | . . . |
8085程序:两个8位数的乘法
8086程序:两个8位BCD数的减法