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 |
… | … |
广告