8085微处理器上实现升序冒泡排序的程序


在这里,我们将看到一个8085程序,用于将一组数字按升序排列。

问题陈述

编写一个8085程序,使用冒泡排序法对数字进行升序排序,其中n个数字存储在从8041H开始的连续内存位置中,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年10月9日

443 次查看

启动您的职业生涯

完成课程获得认证

开始学习
广告