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 | D2, 14, 80 | JNC 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 | 06 |
| 8042 | 05 |
| 8043 | 04 |
| 8044 | 03 |
| 8045 | 02 |
| 8046 | 01 |
| ... | ... |
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP