8085程序:将两位BCD码转换为二进制
在本程序中,我们将了解如何将BCD数转换为等效的二进制数。
问题陈述
一个BCD数存储在地址802BH中。将其转换为等效的二进制数,并将其存储到内存地址802CH中。
讨论
在这个问题中,我们从内存中获取一个BCD数并将其转换为等效的二进制数。首先,我们截取输入的每个半字节。所以如果输入是52(0101 0010),那么我们可以通过将数字与0FH和F0H进行掩码来简单地截取它。当截取高位半字节后,将其向左旋转四次以将其传输到低位半字节。
现在,只需使用十进制调整方法乘以数字即可获得最终的十进制结果。
输入
| 地址 | 数据 |
|---|---|
| . . . | . . . |
| 802B | 52 |
| . . . | . . . |
流程图

程序
| 地址 | 十六进制代码 | 标签 | 助记符 | 注释 |
|---|---|---|---|---|
| 8000 | 31, FF, 80 | LXI SP,80FFH | 初始化堆栈指针 | |
| 8003 | 21, 2B, 80 | LXI H, 802BH | 指向输入缓冲区的指针 | |
| 8006 | 01, 2C, 80 | LXI B, 802CH | 指向输出缓冲区的指针 | |
| 8009 | 7E | MOV A, M | 将802BH的内容移动到A | |
| 800A | CD, 0F, 80 | CALL BCDBIN | 将BCD数转换为十六进制的子程序 | |
| 800D | 02 | STAX B | 将累加器存储到BC指向的内存位置 | |
| 800E | 76 | HLT | 终止程序 | |
| 800F | C5 | BCDBIN | PUSH B | 保存B |
| 8010 | 47 | MOV B, A | 将A复制到B | |
| 8011 | E6, 0F | ANI 0FH | 最高四位掩码 | |
| 8013 | 4F | MOV C, A | 将A复制到C | |
| 8014 | 78 | MOV A, B | 将B复制到A | |
| 8015 | E6, F0 | ANI F0H | 最低四位掩码 | |
| 8017 | 0F | RRC | 累加器右移4次 | |
| 8018 | 0F | RRC | ||
| 8019 | 0F | RRC | ||
| 801A | 0F | RRC | ||
| 801B | 57 | MOV D, A | 将计数值加载到寄存器D中 | |
| 801C | AF | XRA A | 清除累加器的内容 | |
| 801D | 1E, 0A | MVI E, 0AH | 用0AH初始化寄存器E | |
| 801F | 83 | SUM | ADD E | 将寄存器E的内容加到A中 |
| 8020 | 15 | DCR D | 将计数减1,直到达到0 | |
| 8021 | C2, 1F, 80 | JNZ SUM | ||
| 8024 | 81 | ADD C | 将寄存器C的内容加到A中 | |
| 8025 | C1 | POP B | 恢复B | |
| 8026 | C9 | RET | 将控制权返回给调用程序 |
输出
| 地址 | 数据 |
|---|---|
| . . . | . . . |
| 802C | 34 |
| . . . | . . . |
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP