8085微处理器中将十六进制转换为ASCII的程序


这里我们将看到一个8085微处理器的程序。该程序将十六进制转换为ASCII值。

问题陈述

编写一个8085汇编语言程序,将十六进制字符转换为ASCII值。

讨论

我们知道数字00H的ASCII码是30H(48D),09H的ASCII码是39H(57D)。所以所有其他数字都在30H到39H的范围内。0AH的ASCII值是41H(65D),0FH的ASCII值是46H(70D),所以所有其他字母(B、C、D、E、F)都在41H到46H的范围内。

这里我们在内存位置8000H提供十六进制数字,ASCII等效值存储在位置8001H。

十六进制到ASCII转换背后的逻辑非常简单。我们只是检查数字是否在0-9范围内。当数字在这个范围内时,十六进制数字是数字,我们只需简单地加上30H即可得到ASCII值。当数字不在0-9范围内时,数字在A-F范围内,在这种情况下,我们将数字转换为41H及以后。

在程序中,我们首先清除进位标志。然后从给定数字中减去0AH。如果该值是数字,则减法后的结果将为负数,因此进位标志将被设置。现在通过检查进位状态,我们可以简单地将30H与该值相加以获得ASCII值。

另一方面,当减法的结果为正数或0时,我们将41H与减法的结果相加。

输入

第一个输入

地址
数据


8000
0A


第二个输入

地址
数据


8000
05


第三个输入

地址
数据


8000
0F


 

流程图

程序

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


LXI H, 8000H
加载数字的地址
F003
7E


MOV A,M
将内存中的数据加载到累加器A
F004
47


MOV B,A
将数字复制到B
F005
37


STC
设置进位标志
F006
3F


CMC
反转进位标志
F007
D6, 0A


SUI 0AH
从A中减去0AH
F009
DA, 11, F0


JC NUM
当存在进位时,A为数字
F00C
C6, 41


ADI 41H
为字母添加41H
F00E
C3, 14, F0


JMP STORE
跳转到存储值
F011
78
NUM
MOV A, B
将B取回A
F012
C6


ADI 30H
将30H与A相加以获得ASCII
F014
23
STORE
INX H
指向下一个存储地址的位置
F015
77


MOV M,A
将A存储到HL对指向的内存位置
F016
76


HLT
终止程序


输出

第一个输出

地址
数据


8001
41


第二个输出

地址
数据


8001
35


第三个输出

地址
数据


8001
46


更新于:2019年10月9日

736 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告