8085微处理器中实现降序选择排序的程序


在这里,我们将看到一个8085微处理器程序。该程序将使用选择排序技术对数字序列进行逆序排序。

问题陈述

编写一个8085汇编语言程序,使用选择排序法对给定的序列进行降序排序。数字存储在8001H及以后的地址中。8000H存储块大小。

讨论

在选择排序技术中,我们将从一组数字中选择最小或最大项。在本例中,我们考虑降序排序,因此我们选择最大数。通过取最大数,我们将其与当前指向位置的元素交换。在每次传递中,子块的最大数都放置在正确的位置。

此程序有两个子程序。第一个子程序将检查一组数字中的最大数,第二个子程序将用于交换数字。

输入

地址
数据


8000
06
8001
22
8002
55
8003
33
8004
66
8005
44
8006
11



流程图

 

 

 

程序

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


LXI SP,9000H
初始化堆栈指针
F003
21, 00, 80


LXI H,8000H
指向获取块大小的地址
F006
4E


MOV C,M
获取计数
F007
23
DO
INX H
指向下一个位置以获取块
F008
7E


MOV A,M
将元素加载到A
F009
CD, 18, F0


CALL MAX
查找最大值
F00C
BE


CMP M
比较M和A
F00D
CA, 13, F0


JZ GO
如果Z=1,它们相同,跳过交换
F010
CD, 2A, F0


CALL SWAP
交换最小值和当前内容
F013
0D
GO
DCR C
C减1
F014
C2, 07, F0


JNZ DO
如果Z=0,跳转到DO
F017
76


HLT
终止程序
F018
E5
MAX
PUSH H
将HL压入堆栈
F019
C5


PUSH B
将BC压入堆栈
F01A
0D


DCR C
C减1
F01B
23
LOOP
INX H
指向下一个位置
F01C
BE


CMP M
将内存数据与A比较
F01D
D2, 23, F0


JNC SKIP
如果CY=0,跳转到SKIP
F020
7E


MOV A,M
更新A的值
F021
54


MOV D,H
将H复制到D
F022
5D


MOV E,L
将L复制到E
F023
0D
SKIP
DCR C
C减1
F024
C2, 1B, F0


JNZ LOOP
如果Z=0,跳转到LOOP
F027
C1


POP B
从堆栈中弹出BC
F028
E1


POP H
从堆栈中弹出HL
F029
C9


RET
从子程序返回
F02A
F5
SWAP
PUSH PSW
将AF存储到堆栈中
F02B
C5


PUSH B
将BC压入堆栈
F02C
1A


LDAX D
A = 获取DE指向的地址处的数据
F02D
47


MOV B,A
将A复制到B
F02E
7E


MOV A,M
获取HL指向的地址处的数据
F02F
12


STAX D
将A的内容存储到DE指向的内存中
F030
70


MOV M,B
将B的内容存储到HL指向的内存中
F031
C1


POP B
从堆栈中弹出BC
F032
F1


POP PSW
从堆栈中弹出AF
F033
C9


RET
从交换返回


输出

地址
数据


8001
66
8002
55
8003
44
8004
33
8005
22
8006
11




地址
数据


8001
11
8002
22
8003
33
8004
44
8005
55
8006
66


更新于:2019年10月9日

浏览量:273

开启你的职业生涯

完成课程获得认证

开始学习
广告