8085程序:十六进制转换为BCD码
在本程序中,我们将学习如何将二进制数转换为其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