8085程序:将BCD转换为HEX


在本程序中,我们将了解如何将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数转换为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
将计数减1,直到达到0
8021
C2, 1F, 80

JNZ SUM

8024
81

ADD C
将寄存器C的内容加到A
8025
C1

POP B
恢复B
8026
C9

RET
将控制权返回给调用程序


输出

地址
数据
.
.
.
.
.
.
802C
34
.
.
.
.
.
.

更新于: 2019年7月30日

3K+ 浏览量

开启你的职业生涯

通过完成课程获得认证

开始学习
广告