基于选择的8085程序实现冒泡排序


现在让我们来看一个Intel 8085微处理器的程序。在这个程序中,我们将看到如何基于选择执行冒泡排序。

问题陈述:

编写8085汇编语言程序,对一组数据执行冒泡排序操作,并根据选择将其排列成升序或降序。

讨论:

在这个程序中,我们根据某种选择将一些数字排列成升序或降序。我们将选择存储在A000H位置。如果选择值为00H,则数据将按升序排序,否则将按降序排序。8000H存储块大小,8001H及其之后存储数据。

输入:

第一个输入

地址
数据
.
.
.
.
.
.
8000
06
8001
22
8002
55
8003
33
8004
66
8005
44
8006
11
.
.
.
.
.
.
A000
00
.
.
.
.
.
.

第二个输入

地址
数据
.
.
.
.
.
.
8000
06
8001
22
8002
55
8003
33
8004
66
8005
44
8006
11
.
.
.
.
.
.
A000
45
.
.
.
.
.
.

流程图:

程序:

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

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

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

MOV C,M
获取计数
F007
0D

DCR C
将C减1
F008
1E, 01
L1
MVI E,01H
E将存储一轮交换次数加一
F00A
41

MOV B,C
存储比较次数
F00B
23

INX H
指向下一个位置
F00C
7E
L2
MOV A,M
将内存加载到A
F00D
23

INX H
指向下一个位置
F00E
BE

CMP M
将内存元素与A比较
F00F
F5

PUSH PSW
将AF存储到堆栈中
F010
3A, 00, A0

LDA A000
获取选择
F013
FE, 00

CPI 00H
将选择与00H比较
F015
CA, 1F, F0

JZ ASC
如果Z = 1,则按升序排序
F018
F1

POP PSW
从堆栈中弹出AF
F019
D2, 29, F0

JNC SKIP
如果CY = 0,则跳转到SKIP
F01C
C3, 23, F0

JMP EXG
否则跳转到交换
F01F
F1
ASC
POP PSW
从堆栈中弹出AF
F020
DA, 29, F0

JC SKIP
如果CY = 1,则转到skip
F023
56
EXG
MOV D,M
将内存加载到D
F024
77

MOV M,A
将A加载到内存
F025
2B

DCX H
指向先前位置
F026
72

MOV M,D
将D加载到内存
F027
23

INX H
指向下一个位置
F028
1C

INR E
增加交换次数
F029
05
SKIP
DCR B
将B减1
F02A
C2, 0C, F0

JNZ L2
如果Z = 0,则转到L2循环
F02D
1D

DCR E
将E寄存器减1
F02E
CA, 38, F0

JZ DONE
如果Z = 1,则终止程序
F031
21, 00, 80

LXI H,8000H
指向块的初始地址
F034
0D

DCR C
减少计数
F035
C2, 08, F0

JNZ L1
如果Z = 0,则转到L1
F038
76
DONE
HLT
终止程序

输出:

第一个输出

地址
数据
.
.
.
.
.
.
8000
06
8001
11
8002
22
8003
33
8004
44
8005
55
8006
66
.
.
.
.
.
.

第二个输出

地址
数据
.
.
.
.
.
.
8000
06
8001
66
8002
55
8003
44
8004
33
8005
22
8006
11
.
.
.
.
.
.



更新于:2019年7月30日

浏览量:558

开启你的职业生涯

完成课程获得认证

开始学习
广告