8085 微处理器将 16 位二进制数转换为 BCD 的程序


在这里,我们将看到一个 8085 微处理器程序。此程序将用于将 16 位二进制数据转换为 BCD 数据。

问题陈述 -

编写一个 8085 汇编语言程序,将 16 位二进制数据转换为 BCD 数据。二进制数据存储在 8000H 和 8001H 位置。

讨论 -

这个问题通过实现 16 位计数器来解决。我们首先存储 16 位数,然后逐个减少数字,并通过调整十进制值来增加十进制值。要增加值,我们可以使用 INR 指令,但 INR 指令不会影响进位标志。因此,这里我们使用 ADI 01H 将其增加 1。

二进制数取自 8000H 和 8001H 位置,最终结果存储在 8050H 到 8052H 位置。

输入

地址
数据


8000
FF
8001
FF



流程图

程序

地址
十六进制代码
标签
助记符
注释
F000
2A, 00, 80


LHLD 8000H
用 16 位数据初始化 HL
F003
11, 00, 00


LXI D,0000H
清除 DE 寄存器
F006
AF


XRA A
清除 A 寄存器
F007
C6, 01
LOOP
ADI 01H
将 01 加到 A 中
F009
21


DAA
调整十进制
F00A
47


MOV B,A
将 A 存储到 B
F00B
D2, 1B, F0


JNC SKIP
如果 CY = 0,则转到 skip
F00E
7B


MOV A,E
将 E 加载到 A
F00F
C6, 01


ADI 01H
将 01H 加到 A 中
F011
27


DAA
十进制调整
F012
5F


MOV E,A
从 A 获取 E
F013
D2, 1B,F0


JNC SKIP
如果 CY = 0,则转到 skip
F016
7A


MOV A,D
将 D 取到 A
F017
C6, 01


ADI 01H
将 01H 加到 A 中
F019
27


DAA
调整十进制
F01A
57


MOV D,A
将 A 加载到 D
F01B
2B
SKIP
DCX H
减少 DE
F01C
7C


MOV A,H
将 H 加载到 A
F01D
85


ORA L
A 和 L 进行或运算
F01E
78


MOV A,B
将 B 加载到 A
F01F
C2, 07, F0


JNZ LOOP
跳转到 Loop
F022
EB


XCHG
交换 DE 和 HL
F023
22, 51, 80


SHLD 8051H
将 HL 内容存储到内存中
F026
32, 50, 80


STA 8050H
将 A 存储到内存中
F029
76


HLT
终止程序

 

输出

地址
数据


8050
35
8051
55
8052
06


更新于: 2019-10-09

562 次查看

启动您的 职业生涯

通过完成课程获得认证

立即开始
广告