8085程序解压16位BCD码,并将其存储到连续位置


在这里我们将看到如何从内存中获取16位BCD数据并对其进行解压,然后使用8085将其存储到内存中。

问题陈述

编写8085程序,从内存中获取16位BCD数,然后通过解压将其每个数字存储到不同的位置。

讨论

为了解决这个问题,我们将创建一个子程序,该子程序可以解压1字节BCD数并将其存储到内存中,然后我们将该子程序使用两次来存储16位数据。该子程序将通过掩盖高4位和低4位来分割数字,并将其存储到内存中。

输入

DE寄存器对中的1234

流程图

 

程序

地址
十六进制代码
标签
助记符
注释
F000
31, 00, FC
 
LXI SP,FC00
初始化堆栈指针
F003
11, 34, 12
 
LXI D,ABCD
加载16位数
F006
21, 00, 90
 
LXI H,9000
指向目标地址
F009
7B
 
MOV A,E
将E移入A
F00A
CD, 13, F0
 
CALL UNPACK
解压低字节并存储
F00D
23
 
INX H
指向下一个位置
F00E
7A
 
MOV A,D
获取高字节
F00F
CD, 13, F0
 
CALL UNPACK
解压高字节并存储
F012
76
 
HLT
终止程序
F013
D5
UNPACK
PUSH D
将DE压入堆栈
F014
57
 
MOV D,A
将数字存储到D中
F015
E6, F0
 
ANI 0FH
掩盖高4位
F017
77
 
MOV M,A
存储低4位
F018
7A
 
MOV A,D
再次获取数字
F019
E6, F0
 
ANI F0H
掩盖低4位
F01B
07
 
RLC
左移旋转
F01C
07
 
RLC
左移旋转
F01D
07
 
RLC
左移旋转
F01E
07
 
RLC
左移旋转
F01F
23
 
INX H
指向下一个位置
F020
77
 
MOV M,A
将高4位存储到内存中
F021
D1
 
POP D
从堆栈中弹出DE
F022
C9
 
RET
从子程序返回

 

输出

地址
数据


9000
04
9001
03
9002
02
9003
01


 

 

 

 

更新于: 2019-07-30

838 次浏览

启动您的职业生涯

通过完成课程获得认证

开始
广告
© . All rights reserved.