8085 微处理器将两位十六进制转换为两个ASCII值的程序


在这里,我们将看到一个 Intel 8085 微处理器的程序。使用此程序,我们可以将 8 位数字转换为两位 ASCII 值。

问题陈述

 编写一个 8085 汇编语言程序,将 8 位二进制转换为 2 个字符的 ASCII 值。8 位二进制数存储在内存位置 8050H 中。将每个四位数分离并将其转换为相应的 ASCII 代码,并将其存储到内存位置 8060H 和 8061H 中。

讨论

在这个问题中,我们使用一个子程序将一个十六进制数字(四位数)转换为其等效的 ASCII 值。由于 8 位数字包含两个四位数,因此我们可以执行此子程序来查找它们的 ASCII 值。我们可以很容易地通过屏蔽高四位数来获得低四位数,对于高四位数,我们必须首先屏蔽低四位数,然后将寄存器内容向右旋转四次,现在我们可以将其更改为 ASCII 值。

在这里,我们将输入 3AH,程序将返回 33 和 41。这些分别是 3 和 A 的 ASCII 值。

输入

地址
数据


8050
3A


 

流程图

程序

地址
十六进制代码
标签
助记符
注释
8000
31, 00, 81
 
LXI SP, 8100
初始化 SP
8003
21, 50, 80
START
LXI H, 8050H
使用输入缓冲区的第一个位置初始化指针
8006
11, 60, 80
 
LXI D, 8060H
使用输出缓冲区的第一个位置初始化指针
8009
7E
 
MOV A, M
将 8050H 的内容移至 A
800A 
47
 
MOV B, A
将 A 复制到 B
800B 
0F
 
RRC
将累加器向右旋转 4 次
800C 
0F
 
RRC
 
800D 
0F
 
RRC
 
800E 
0F
 
RRC
 
800F 
CD, 1A, 80
 
CALL ASCII
此子程序将二进制数转换为 ASCII
8012
12
 
STAX D
存储由 DE 寄存器对指定的累加器内容
8013
13
 
INX D
转到下一个位置
8014
78
 
MOV A, B
将 B 复制到 A
8015
CD, 1A, 80
 
CALL ASCII
此子程序将二进制数转换为 ASCII
8018
12
 
STAX D
存储由 DE 寄存器对指定的累加器内容
8019
76
 
HLT
终止程序
801A 
E6, 0F
ASCII
ANI 0FH
将 BCD 数字转换为其对应的
ASCII 值
+ 48
0 到 9 -----------------à 48 到 57
+ 55
A 到 F -----------------à 65 到 70
+ 48 + 7
所以 +48 是通用的,但如果十六进制数字是
在 A 到 F 之间,则额外增加 +7。
801C 
FE, 0A
 
CPI 0AH
 
801E 
DA, 23, 80
 
JC CODE
 
8021
C6, 07
 
ADI 07H
 
8023
C6, 30
CODE
ADI 30H
 
8025
C9
 
RET
将控制权返回给调用程序

 

输出

地址
数据


8060
33
8061
41


更新于: 2019 年 10 月 5 日

481 次查看

启动您的 职业生涯

通过完成课程获得认证

开始
广告