8085程序:将ASCII转换为二进制


现在让我们来看一个Intel 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年7月30日

4K+ 次浏览

启动你的职业生涯

通过完成课程获得认证

立即开始
广告