8085程序用于减去两个BCD数
这里我们将看到如何使用8085进行BCD减法。
问题陈述
编写8085汇编语言程序,执行存储在8001和8002位置的两个数的BCD减法。结果将存储在8050和8051。
讨论
要减去两个BCD数,我们将使用十的补码方法。将第一个数存储到B中,将99加载到A中,然后减去该数以获得9的补码。之后,加上1得到10的补码。我们不能使用INR指令增加。这不会影响CY标志。所以我们必须使用ADI 01。然后将使用DAA指令调整十进制。然后,如果结果为负数,我们将FF存储为高位字节,否则将00存储为高位字节。
输入
| 地址 | 数据 |
|---|---|
| . . . | . . . |
| 8000 | 01 |
| 8001 | 97 |
| 8002 | 88 |
| . . . | . . . |
流程图

程序
| 地址 | 十六进制代码 | 标签 | 助记符 | 注释 |
|---|---|---|---|---|
| F000 | 21, 01, 80 | | LXI H,8001H | 指向获取选择的地址 |
| F003 | 46 | | MOV B,M | 将操作数加载到B |
| F004 | 3E, 99 | | MVI A,99H | 将99H加载到A |
| F006 | 23 | | INX H | 指向下一个操作数 |
| F007 | 96 | | SUB M | 从A中减去M |
| F008 | C6, 01 | | ADI 01H | 加上01H以获得10的补码 |
| F00A | 80 | | ADD B | 将B与A相加 |
| F00B | 27 | | DAA | 调整十进制 |
| F00C | 6F | | MOV L,A | 将A存储到L |
| F00D | DA, 3A, F0 | | JC SKP2 | 如果CY = 1,跳转到SKP2 |
| F010 | 26, FF | | MVI H,FFH | 将FFH加载到H |
| F012 | C3, 62, F0 | | JMP STORE | 存储结果 |
| F015 | 26, 00 | SKP2 | MVI H,00H | 清除HL |
| F017 | 22, 50, 80 | STORE | SHLD 8050H | 从HL存储结果 |
| F01A | 76 | | HLT | 终止程序 |
输出
| 地址 | 数据 |
|---|---|
| . . . | . . . |
| 8050 | 09 |
| 8051 | 00 |
| . . . | . . . |
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP