使用8085微处理器进行选择排序的程序
这里我们将看到一个使用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 |
| … | … |
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP