8085程序用于加两个连续的数组字节


在这里,我们将了解如何使用8085添加数组中的两个连续元素。

问题陈述

编写8085程序,将数组的两个连续元素相加并将结果存储在同一位置。进位将放在另一个字节的底部。数字从8001位置开始存储。数组的大小存储在8000位置。

讨论

我们将使用一个子程序来解决此问题。该子程序将添加两个连续的数字并将它们存储到正确的位置。该子程序将被多次调用以添加所有连续的配对。该任务将遵循元素数量的一半。因此,我们获取计数,然后将其向右旋转以使其减半。我们通过进位进行旋转。如果进位已经很高,它可能会存储不同的结果,因此我们使用STC和CMC指令清除进位。

输入

地址
数据


8000
0A
8001
E9
8002
D3
8003
61
8004
AD
8005
2A
8006
1F
8007
5D
8008
A6
8009
A9
800A
35


 

流程图

 

程序

地址
十六进制代码
标签
助记符
注释
F000
21, 00, 80
 
LXI H,8000
指向获取数组大小
F003
7E
 
MOV A,M
将数组大小加载到内存中
F004
37
 
STC
设置进位标志
F005
3F
 
CMC
取反进位标志
F006
0F
 
RRC
通过进位右移
F007
47
 
MOV B,A
将A存储到B中
F008
23
LOOP
INX H
指向下一个位置
F009
CD, 11, F0
 
CALL PADD
调用配对加法子程序
F00C
05
 
DCR B
将B减1
F00D
C2, 08, F0
 
JNZ LOOP
跳转到循环
F010
76
 
HLT
终止程序
F011
0E, 00
PADD
MVI C,00H
清除C标志
F013
7E
 
MOV A,M
将第一个数字从内存加载到A
F014
23
 
INX H
指向下一个位置
F015
86
 
ADD M
将A和内存元素相加
F016
D2, 1A, F0
 
JNC STORE
如果进位未设置,则跳转到STORE
F019
0C
 
INR C
否则将C加1
F01A
71
STORE
MOV M,C
将C存储到内存中
F01B
2B
 
DCX H
指向前一个位置
F01C
77
 
MOV M,A
将A存储到内存中
F01D
23
 
INX H
指向下一个位置
F01E
C9
 
RET
从子程序返回

 

输出

地址
数据


8001
BC
8002
01
8003
0E
8004
01
8005
49
8006
00
8007
03
8008
01
8009
DE
800A
00


 

更新于: 2019年7月30日

691 次查看

开启你的职业生涯

通过完成课程获得认证

开始学习
广告