8085程序反序传输数据块


在这里,我们将学习如何使用8085反序传输数据块。

问题陈述

编写8085程序,以反序传输N字节的数据块。该数据块存储在地址8001及其后续地址中,数据块大小存储在8000地址中。数据块将移动到地址9000及其后续地址中。

讨论

为了解决这个问题,我们首先获取数据块的大小。DE寄存器对设置为指向目标地址9000H。HL寄存器对设置为指向数据块的最后一个元素。如果数据块大小为0A,则最后一个块将位于800A。首先,HL指向8000,从中获取块大小并存储到C中。现在将C与L寄存器相加以获取最后一个块的地址。现在从HL指向的内存中获取每个元素,并将其存储回DE指向的内存中。然后增加DE,并减少HL。因此,整个块将反向移动。

输入

地址
数据


8000
0A
8001
11
8002
22
8003
33
8004
44
8005
55
8006
66
8007
77
8008
88
8009
99
800A
AA


 

流程图

 

程序

地址
十六进制代码
标签
助记符
注释
F000
21, 00, 80
 
LXI H,8000
指向8000以获取块大小
F003
4E
 
MOV C,M
将块大小存入C
F004
11, 00 90
 
LXI D,9000
指向目标地址
F007
7D
 
MOV A,L
将L加载到A
F008
81
 
ADD C
将C相加以指向块的最后一个地址
F009
6F
 
MOV L,A
将A再次存储到L
F00A
7E
LOOP
MOV A,M
将内存加载到A
F00B
12
 
STAX D
将A存储到DE指向的目标位置
F00C
13
 
INX D
将目标指向下一个地址
F00D
2B
 
DCX H
将源指向之前的地址
F00E
0D
 
DCR C
将C减1
F00F
C2, 0A, F0
 
JNZ LOOP
如果Z标志未设置,则跳转到LOOP
F012
76
 
HLT
终止程序

 

输出

地址
数据


9000
AA
9001
99
9002
88
9003
77
9004
66
9005
55
9006
44
9007
33
9008
22
9009
11


 

 

 

更新于:2019年7月30日

7K+ 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.