8085程序,用于执行升序选择排序
现在让我们看看 Intel 8085 微处理器的程序。在这个程序中,我们将看到如何使用选择排序对数字序列进行排序。
问题陈述:
编写 8085 汇编语言程序,使用选择排序对给定序列进行升序排序。数字存储在 8001H 及其之后的位置。8000H 存储块的大小。
讨论:
在选择排序技术中,我们将从一组数字中选择最小或最大项。在本例中,我们正在考虑升序排序,因此我们选择最小数字。通过取最小数字,我们将其与当前指向位置的元素交换。在每次遍历中,子块的最小数字都放置在正确的位置。
此程序有两个子程序。第一个子程序将检查一组数字中的最小数字,第二个子程序将用于交换数字。
输入:
| 地址 | 数据 |
|---|---|
| . . . | . . . |
| 8000 | 06 |
| 8001 | 22 |
| 8002 | 55 |
| 8003 | 33 |
| 8004 | 66 |
| 8005 | 44 |
| 8006 | 11 |
| . . . | . . . |
流程图:

程序:
| 地址 | 十六进制代码 | 标签 | 助记符 | 注释 |
|---|---|---|---|---|
| F000 | 31, 00, 90 | LXI SP,9000H | 初始化堆栈指针 | |
| F003 | 21, 00, 80 | LXI H,8000H | 指向获取块大小的位置 | |
| F006 | 4E | MOV C,M | 获取计数 | |
| F007 | 23 | DO | INX H | 指向下一个位置以获取块 |
| F008 | 7E | MOV A,M | 将元素加载到 A | |
| F009 | CD, 18, F0 | CALL MIN | 查找最小值 | |
| F00C | BE | CMP M | 比较 M 和 A | |
| F00D | CA, 13, F0 | JZ GO | 如果 Z = 1,则它们相同,跳过交换 | |
| F010 | CD, 2A, F0 | CALL SWAP | 交换最小值和当前内容 | |
| F013 | 0D | GO | DCR C | 将 C 减 1 |
| F014 | C2, 07, F0 | JNZ DO | 如果 Z = 0,则转到 Do | |
| F017 | 76 | HLT | 终止程序 | |
| F018 | E5 | MIN | PUSH H | 将 HL 推入堆栈 |
| F019 | C5 | PUSH B | 将 BC 推入堆栈 | |
| F01A | 0D | DCR C | 将 C 减 1 | |
| F01B | 23 | LOOP | INX H | 指向下一个位置 |
| F01C | BE | CMP M | 比较内存数据与 A | |
| F01D | DA, 23, F0 | JNC SKIP | 如果 CY = 0,则跳转到 SKIP | |
| F020 | 7E | MOV A,M | 更新 A 的值 | |
| F021 | 54 | MOV D,H | 将 H 复制到 D | |
| F022 | 5D | MOV E,L | 将 L 复制到 E | |
| F023 | 0D | SKIP | DCR C | 将 C 减 1 |
| F024 | C2, 1B, F0 | JNZ LOOP | 如果 Z = 0,则转到 Loop | |
| F027 | C1 | POP B | 将 BC 从堆栈中弹出 | |
| F028 | E1 | POP H | 将 HL 从堆栈中弹出 | |
| F029 | C9 | RET | 从子程序返回 | |
| F02A | F5 | SWAP | PUSH PSW | 将 AF 存储到堆栈中 |
| F02B | C5 | PUSH B | 将 BC 推入堆栈 | |
| F02C | 1A | LDAX D | A = 获取 DE 指向的位置的数据 | |
| F02D | 47 | MOV B,A | 将 A 复制到 B | |
| F02E | 7E | MOV A,M | 获取 HL 指向的位置的数据 | |
| F02F | 12 | STAX D | 将 A 的内容存储到 DE 指向的内存中 | |
| F030 | 70 | MOV M,B | 将 B 的内容存储到 HL 指向的内存中 | |
| F031 | C1 | POP B | 将 BC 从堆栈中弹出 | |
| F032 | F1 | POP PSW | 将 AF 从堆栈中弹出 | |
| F033 | C9 | RET | 从交换返回 |
输出:
| 地址 | 数据 |
|---|---|
| . . . | . . . |
| 8001 | 11 |
| 8002 | 22 |
| 8003 | 33 |
| 8004 | 44 |
| 8005 | 55 |
| 8006 | 66 |
| . . . | . . . |
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP