8085程序:相减数组中两个连续字节


在这里,我们将学习如何使用8085微处理器来减去数组中两个连续的元素。

问题陈述

编写一个8085程序,该程序减去数组中两个连续的元素并将结果存储在同一位置。结果将放置在与获取它们相同的位置。数字从8001号位置开始存储。数组的大小存储在8000号位置。

讨论

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

输入

地址
数据


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


 

流程图

 

程序

地址
十六进制代码
标号
助记符
注释
F000
21, 00, 80
 
LXI H,8000
指向获取数组大小的位置
F003
7E
 
MOV A,M
将数组大小加载到累加器A
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
调用PADD子程序
F00C
05
 
DCR B
将B减1
F00D
C2, 08, F0
 
JNZ LOOP
跳转到LOOP
F010
76
 
HLT
终止程序
F011
0E, 00
PADD:
MVI C,00H
清除C寄存器
F013
7E
 
MOV A,M
将第一个数字从内存加载到A
F014
23
 
INX H
指向下一个位置
F015
96
 
SUB 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
16
8002
00
8003
4C
8004
00
8005
0B
8006
00
8007
37
8008
00
8009
74
800A
00


更新于:2019年7月30日

215 次浏览

启动你的职业生涯

通过完成课程获得认证

开始学习
广告