8085 冒泡排序程序


在这个程序中,我们将了解如何使用冒泡排序技术对一组字节进行排序。

问题陈述

编写 8085 汇编语言程序,对存储在从 8041H 开始的连续内存位置中的 n 个数字进行升序排序,其中 n 的值存储在内存位置 8040H 中(使用冒泡排序)。

讨论

在这个程序中,我们将使用冒泡排序技术对数字进行排序。这种排序技术将执行多次传递。在每次传递中,最大的数字都存储在列表的末尾。这里我们从 8041H 到 8046H 获取数字。数组大小存储在 8040H 中。

输入

地址
数据
...
...
8040
06
8041
06
8042
05
8043
04
8044
01
8045
02
8046
03
...
...


流程图

程序

地址
十六进制代码
标签
助记符
注释
8000
21, 40, 80
START
LXI H, 8040H
指向输入缓冲区的指针
8003
16, 00

MVI D, 00H
D 寄存器用作标志寄存器
8005
4E

MOV C, M
用数据计数初始化 C 寄存器
8006
0D

DCR C
设置 C 寄存器用于比较计数
8007
23

INX H
指向下一个位置
8008
7E
CHECK
MOV A, M
获取数字
8009
23

INX H
转到下一个位置
800A
BE

CMP M
将当前内存位置的内容与累加器的内容进行比较
800B
DA, 14, 80

JC NEXTBYT
如果 (A) < 第二个字节,则不交换
800E
46

MOV B, M
获取第二个字节以进行交换
800F
77

MOV M, A
将第一个字节存储在第二个位置
8010
2B

DCX H
指向第一个位置
8011
70

MOV M, B
将第二个字节存储在第一个位置
8012
23

INX H
准备好进行下一次比较
8013
16, 01

MVI D, 01H
将 1 加载到 D 中作为交换的余数
8015
0D
NEXTBYT
DCR C
递减比较计数
8016
C2, 08, 80

JNZ CHECK
如果比较计数不为 0,则返回
8019
7A

MOV A, D
获取 A 中的标志位
801A
0F

RRC
将标志位 D0 放入进位中
801B
DA, 00, 80

JC START
如果标志为 1,则发生交换
801E
76

HLT
终止程序


输出

地址
数据
...
...
8041
01
8042
02
8043
03
8044
04
8045
05
8046
06
...
...

更新于: 2019-07-30

2K+ 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.