8085程序将8位BCD数转换为ASCII码


现在让我们来看一个Intel 8085微处理器的程序。此程序将把8位BCD数转换为两位ASCII值。

问题陈述

编写8085汇编语言程序,其中一个8位BCD数存储在内存位置8050H中。将每个BCD数字分开并将其转换为相应的ASCII码,并将其存储到内存位置8060H和8061H中。

讨论

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

这里我们将输入26H,程序将返回32和36。它们分别是2和6的ASCII值。

注意:此程序也可以将8位二进制数转换为ASCII值。

输入

地址
数据
.
.
.
.
.
.
8050
26
.
.
.
.
.
.

流程图

程序

地址
十六进制代码
标签
助记符
注释
8000
31, 00, 81

LXI SP, 8100
初始化SP
8003
21, 50, 80
START
LXI H, 8050H
用IN-BUFFER的第一个位置初始化指针
8006
11, 60, 80

LXI D, 8060H
用OUT-BUFFER的第一个位置初始化指针
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
32
8061
36
.
.
.
.
.
.

更新于: 2019-07-30

2K+ 浏览量

启动您的职业生涯

通过完成课程获得认证

开始
广告