【8086汇编】基础排序之选择排序
来源:互联网 发布:hopscotch编程 编辑:程序博客网 时间:2024/06/06 09:40
选择排序,顾名思义是一种“选择”,每次选择最小(大)的数与首位数交换
接下来从第二个数开始对后面的序列继续进行上一步操作,每次都选择最小的数,与之交换
循环操作直到剩下一个数的时候为结束
相关的C语言,java代码相信大家都能找到
今天,我们通过8086汇编语言,看一下这个排序算法
DATAS SEGMENT ary dw 1,44,3,42,5,52,7,43,9,10 arysize dw 20 position dw 0 table dw 3 dup(?) temp dw 0DATAS ENDSSTACKS SEGMENT dw 20 dup(0)STACKS ENDSCODES SEGMENT START:main proc farASSUME CS:CODES,DS:DATAS,SS:STACKS MOV AX,DATAS MOV DS,AX mov table,offset ary mov table+2,offset arysize mov table+4,offset position mov bx,offset table call com_pary MOV AH,4CH INT 21H retmain endpcom_pary proc nearpush axpush cxpush sipush dimov si,[bx];数组位置mov di,[bx+2];数组的lengthmov cx,[di];用cx记录循环次数mov di,[bx+4];标志最小值的位置loop1:push cxmov ax,arysizesub ax,cx;让ax=imov bp,ax;bp为光标,指向哪个就对哪个操作mov bx,ds:[si+bp];bx记录最小值mov di,bp;di记录最小值的位置add bp,2;对下一个数操作loop2:cmp ds:[si+bp],bxjnb continue;如果bx较小则不用变mov bx,ds:[si+bp];如果bx较大则更新bx为新的最小值mov di,bp;最小值的位置随之变化continue:add bp,2cmp bp,arysizejbe loop2mov bp,ax;bp为光标,指向哪个就对哪个操作mov ax,ds:[si+bp]mov dx,bx;让dx记录最小值mov bx,di;让bx记录最小值的位置mov ds:[si+bx],ax;最小值与第一个值交换位置mov ds:[si+bp],dxpop cxsub cx,2cmp cx,0ja loop1pop dipop sipop cxpop axretcom_pary endpCODES ENDS END START
(如有错误,欢迎指出)
阅读全文
1 0
- 【8086汇编】基础排序之选择排序
- 【8086汇编】基础排序之冒泡排序
- 【8086汇编】基础排序之希尔排序
- 【8086汇编】基础排序之基数排序
- 【8086汇编】基础排序之直接插入排序
- 算法基础之排序篇-选择排序
- 基础算法之排序(2)--选择排序
- java基础之----选择排序 冒泡排序
- java基础之----选择排序 冒泡排序
- 汇编 选择排序
- 汇编选择排序2
- 汇编_ASM_选择排序
- 汇编_ASM_选择排序
- java基础之选择排序
- java基础之选择排序
- JAVA基础之选择排序
- 基础算法之选择排序
- 算法基础之选择排序
- Activity典型情况下的生命周期
- Bmob+Android+ECharts 实现移动端数据上传与图表展示
- Lnmp开启pathinfo模式
- python 基础
- Android:dagger2让你爱不释手-终结篇
- 【8086汇编】基础排序之选择排序
- keras安装问题处理
- 解决excel导出csv乱码问题
- 企业网站推广的方法有哪些?
- java编程思想阅读笔记(三)
- swift3.0清除缓存
- easyui的combox请求重复加载
- json,string,object转换
- 算法讲解:二分图匹配