基于8085微处理器选择进行冒泡排序的程序
在这里,我们将看到一个 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 将存储一次遍历中交换次数加 1 |
| 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,则转到跳过 | |
| 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 |
| … | … |
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP