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 的范围内。

这里的逻辑很简单。我们将检查 ASCII 值是否小于 58H (9 的 ASCII 码 + 1)。当数字小于 58 时,它就是数值。因此,我们只需从 ASCII 值中减去 30H,而当它大于 58H 时,它就是字母值。因此,为此,我们正在减去 37H。

输入

第一个输入

地址
数据


8000
41


 

第二个输入

地址
数据


8000
35


第三个输入

地址
数据


8000
46


 

 

流程图

程序

地址
十六进制代码
标签
助记符
注释
F000
21, 00, 80
 
LXI H, 8000H
加载数字的地址
F003
7E
 
MOV A,M
将 ASCII 数据从内存加载到累加器
F004
FE, 58
 
CPI 58H
与 ASCII(9) + 1 比较
F006
D2, 0E, F0
 
JNC NUM
输入为数字
F009
D6, 37
 
SUI 37H
减去偏移量以获取字母字符
F00B
C3, 10, F0
 
JMP STORE
存储结果
F00E
D6, 30
NUM
SUI 30H
减去 30 以获取数值
F010
23
STORE
INX H
指向下一个位置
F011
77
 
MOV M,A
将累加器内容存储到内存
F012
76
 
HLT
终止程序
 
 
 
 
 
 

 

输出

第一个输出

地址
数据


8001
0A


第二个输出

地址
数据


8001
05


 第三个输出

地址
数据


8001
0F



更新于: 2019 年 10 月 5 日

589 次查看

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告