8085 微处理器中将 BCD 转换为 HEX 的程序
在这里,我们将看到一个 8085 程序,该程序将把 BCD 数转换为等效的 HEX 数。
问题陈述−
一个 BCD 数存储在地址 802BH 中。将其转换为二进制等效值并将其存储到内存地址 802CH 中。
讨论−
在这个问题中,我们从内存中获取一个 BCD 数并将其转换为其二进制等效值。首先,我们将输入的每个 nibble 切割。因此,如果输入是 52(0101 0010),那么我们可以通过将数字与 0FH 和 F0H 进行掩码来简单地将其切割。当高位 nibble 被切割时,将其向左旋转四次以将其传输到低位 nibble。
现在,只需使用十进制调整方法将数字相乘即可获得最终的十进制结果。
输入
地址 | 数据 |
---|---|
… | … |
802B | 52 |
… | … |
流程图
Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.
程序
地址 | HEX 代码 | 标签 | 助记符 | 注释 |
---|---|---|---|---|
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 数转换为 HEX 的子程序 | |
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 | 递减计数器,直到达到 0 | |
8021 | C2, 1F, 80 | JNZ SUM | ||
8024 | 81 | ADD C | 将寄存器 C 的内容加到 A 中 | |
8025 | C1 | POP B | 恢复 B | |
8026 | C9 | RET | 将控制权返回给调用程序 |
输出
地址 | 数据 |
---|---|
… | … |
802C | 34 |
… | … |
广告