使用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 MIN
查找最小值
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
MIN
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
DA, 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
11
8002
22
8003
33
8004
44
8005
55
8006
66


 

更新于:2019年10月5日

281次浏览

启动您的职业生涯

完成课程获得认证

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