8085程序:将两位BCD码转换为二进制


在本程序中,我们将了解如何将BCD数转换为等效的二进制数。

问题陈述

一个BCD数存储在地址802BH中。将其转换为等效的二进制数,并将其存储到内存地址802CH中。

讨论

在这个问题中,我们从内存中获取一个BCD数并将其转换为等效的二进制数。首先,我们截取输入的每个半字节。所以如果输入是52(0101 0010),那么我们可以通过将数字与0FH和F0H进行掩码来简单地截取它。当截取高位半字节后,将其向左旋转四次以将其传输到低位半字节。

现在,只需使用十进制调整方法乘以数字即可获得最终的十进制结果。

输入

地址数据
.
.
.
.
.
.
802B52
.
.
.
.
.
.

流程图

程序

地址十六进制代码标签助记符注释
800031, FF, 80
LXI SP,80FFH初始化堆栈指针
800321, 2B, 80
LXI H, 802BH 指向输入缓冲区的指针
800601, 2C, 80
LXI B, 802CH 指向输出缓冲区的指针
80097E 
MOV A, M 将802BH的内容移动到A
800A CD, 0F, 80
CALL BCDBIN将BCD数转换为十六进制的子程序
800D 02
STAX B 将累加器存储到BC指向的内存位置
800E76
HLT 终止程序
800F C5 BCDBINPUSH B 保存B
801047
MOV B, A 将A复制到B
8011E6, 0F
ANI 0FH 最高四位掩码
80134F 
MOV C, A 将A复制到C
801478
MOV A, B 将B复制到A
8015E6, F0
ANI F0H 最低四位掩码
80170F 
RRC 累加器右移4次
80180F
RRC 
80190F
RRC 
801A 0F
RRC 
801B 57
MOV D, A 将计数值加载到寄存器D中
801C AF 
XRA A 清除累加器的内容
801D 1E, 0A
MVI E, 0AH 用0AH初始化寄存器E
801F 83SUMADD E 将寄存器E的内容加到A中
802015
DCR D 将计数减1,直到达到0
8021C2, 1F, 80
JNZ SUM 
802481
ADD C 将寄存器C的内容加到A中
8025C1 
POP B 恢复B
8026C9 
RET 将控制权返回给调用程序


输出

地址数据
.
.
.
.
.
.
802C34
.
.
.
.
.
.

更新于: 2019年7月30日

4K+ 次查看

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告