选择排序(汇编实现)
来源:互联网 发布:linux snmp协议配置 编辑:程序博客网 时间:2024/05/22 17:06
刚学汇编,于是用汇编编写了选择排序算法,初学真是各种心累啊。
(选择排序思想即为每一次从待排序的数据元素中选出最小的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。)
DATA SEGMENTBUF DB 03H,02H,01H,05H,04H COUNT EQU $-BUFDATA ENDSSTACK SEGMENT STACKDB 200 DUP(0)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATA MOV DS,AX MOV SI,OFFSET BUF ;取BUF偏移地址送SI MOV CX,COUNT ;设置循环计数器LOOP1: ;外层循环 CALL LOOP2 ;调用子函数LOOP2进行内层循环,两层循环实现选择排序 INC SI ;地址指针加1 DEC CX ;计数器减1 JNZ LOOP1 MOV SI,OFFSET BUF MOV CX,COUNTLP: CALL OUTPUT ;(27-32)调用子函数OUTPUT输出排序结果 INC SI DEC CX JNZ LP MOV AH,4CH ;退出 INT 21HLOOP2 PROC NEAR ;子函数LOOP2 PUSH CX ;CX进栈保护现场 MOV DI,SI ;选择排序,令内外层偏移值相等 MOV AX,DI SUB AX,OFFSET BUF MOV DX,COUNT SUB DX,AX MOV CX,DX ;(44-48行)调整好计数器的值AGAIN: ;内层循环 MOV AL,[SI] MOV BL,[DI] CMP AL,BL ;选择排序思想,每次将第i小的数放到第i个位置 JA SWAP ;调用交换子函数 JMP CONTINUE SWAP: MOV AL,[SI] ;(56-59行)交换 XCHG AL,[DI] XCHG AL,[SI] JMP CONTINUECONTINUE: INC DI DEC CX JNZ AGAIN POP CX ;CX出栈回复现场 RET LOOP2 ENDPOUTPUT PROC NEAR ;输出单个数的子程序 MOV DL,30H ;DL初始值30H,因为数字0的ASCII值为30H MOV AH,02H ADD DL,[SI] INT 21H RETOUTPUT ENDP CODE ENDS END START
#include<cstdio>int main(){ int buf[]={3,2,1,5,4}; int len=5; for(int i=0;i<len;i++) { for(int j=i;j<len;j++) { if(buf[i]>buf[j]) { int temp=buf[i]; buf[i]=buf[j]; buf[j]=temp; } } } for(int i=0;i<len;i++) printf("%d ",buf[i]); return 0;}
汇编代码运行结果截图(运行环境为DOSBOX):
1 0
- 选择排序(汇编实现)
- 选择排序c&汇编实现
- 汇编实现排序——简单选择排序
- 8086汇编排序(冒泡、选择、快速)
- 汇编 选择排序
- 汇编选择排序2
- 汇编_ASM_选择排序
- 汇编_ASM_选择排序
- 汇编宏、子程序、选择排序
- 【汇编】 十以内选择排序
- 【8086汇编】基础排序之选择排序
- 选择排序(C++实现)
- 选择排序(java实现)
- 选择排序实现(Java)
- 选择排序(java实现)
- 选择排序(python实现)
- 选择排序(代码实现)
- 汇编实现排序
- CSS定位属性之间的相互作用
- poj1054 模拟
- SpringMVC中Could not obtain transaction-synchronized Session for current thread的解决方案
- Windows下char和wchar_t转换的方法
- 一个小逻辑题的穷举尝试
- 选择排序(汇编实现)
- 使用 iOS 8 Spring Animation API 创建动画
- 快速学会过程建模之数据流图
- android studio 安装PlantUML插件
- Qt之二维绘图
- 整数型加减乘除四则混合运算
- 操作系统引论--操作系统的目标和作用
- 第9周深复制体验1
- ACM第三次练习—1003