8085微处理器中将十六进制转换为BCD的程序
这里我们将看到一个8085程序,它将把二进制数(十六进制)转换为其BCD等效值。
问题陈述−
一个二进制数存储在800H位置。将其转换为BCD等效值并将其存储到内存位置8050H。
讨论−
这里我们从内存中获取一个数字,并将其初始化为计数器。现在在这个计数器的每个步骤中,我们将数字加1,并调整十进制值。通过这个过程,我们找到了二进制数或十六进制数的BCD值。
在这种情况下,我们可以使用INR指令来增加计数器,但是这个指令不会影响进位标志,所以我们使用了ADI 10H
输入
| 地址 | 数据 |
|---|---|
| … | … |
| 8000 | 34 |
| … | … |
流程图

程序
| 地址 | 十六进制代码 | 标签 | 助记符 | 注释 |
|---|---|---|---|---|
| F000 | 21, 00, 80 | LXI H,8000H | 初始化内存指针 | |
| F003 | 16, 00 | MVI D,00H | 清除D寄存器(最高有效字节) | |
| F005 | AF | XRA A | 清除累加器 | |
| F006 | 4E | MOV C,M | 获取十六进制数据 | |
| F007 | C6, 01 | LOOP: | ADI 01H | 逐个计数 |
| F009 | 27 | DAA | 调整BCD计数 | |
| F00A | D2, 0E, F0 | JNC SKIP | 跳转到SKIP | |
| F00D | 14 | INR D | 增加D | |
| F00E | 0D | SKIP: | DCR C | 减少C寄存器 |
| F00F | C2, 07, F0 | JNZ LOOP | 跳转到LOOP | |
| F012 | 6F | MOV L,A | 加载最低有效字节 | |
| F013 | 62 | MOV H,D | 加载最高有效字节 | |
| F014 | 22, 50, 80 | SHLD 8050H | 存储BCD | |
| F017 | 76 | HLT | 终止程序 |
输出
| 地址 | 数据 |
|---|---|
| … | … |
| 8050 | 52 |
| … | … |
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP