汇编源码学习6-改进的冒泡排序
2011-12-18 17:07
288 查看
;改进的冒泡排序 ;算法思想:循环走一趟,如果没有交换操作,说明数组已经有序 ASSUME CS:code1,SS:stack1,DS:data1 data1 SEGMENT array DW 1,8,9,2,5,4,7,6,3,10 flag DB 0 ;用于改进冒泡排序 data1 ENDS ; stack1 SEGMENT STACK DB 256 DUP(?) stack1 ENDS ; code1 SEGMENT start: MOV AX,data1 MOV DS,AX ; MOV CH,9 loop2: MOV CL,CH ;CH记录外循环次数,CL记录内循环次数 LEA BX,array SUB BX,2 MOV AL,0 MOV [flag],AL ;初始化flag loop1: ADD BX,2 MOV DI,BX ;BX记录前一个数的地址,DI记录后一个数的地址 ADD DI,2 MOV AX,[DI] ;AX作临时变量 ;如果用字变量,这里就不能用用AX,应该用AL ;must be index or base register,这里不能用DX CMP [BX],AX JNA next1 ;use stack to exchange 2 variables ;SP一次只能移动2或4个字节,不能操作一个字 PUSH [BX] PUSH [DI] POP [BX] POP [DI] MOV AL,1 MOV [flag],AL ;有交换 next1: DEC CL JNZ loop1 MOV AL,[flag] CMP AL,0 JE exit ;如果flag == 0,说明本趟没有交换,这说明数组已有序 DEC CH JNZ loop2 exit: MOV AH,4CH INT 21H code1 ENDS END start
相关文章推荐
- 汇编源码学习2-冒泡排序
- 汇编源码学习3-输出字符串
- 汇编源码学习5-输入字符串
- 冒泡排序再学习改进冒泡排序(c++)
- 第十七篇:内部排序之二:冒泡排序和选择排序(改进优化,附完整源码)
- 【数据结构与算法】内部排序之二:冒泡排序和选择排序(改进优化,附完整源码)
- 用汇编写改进的冒泡排序
- 【数据结构与算法】内部排序之二:冒泡排序和选择排序(改进优化,附完整源码)
- 内部排序之二:冒泡排序和选择排序(改进优化,附完整源码)
- 汇编源码学习1-找出最大的数
- 算法学习之排序——冒泡排序及其改进算法(Java)
- 汇编源码学习9-子程序设计-输入、输出大整数
- 汇编语言学习系列 冒泡排序实现
- 汇编源码学习7-子程序设计-寄存器传递参数
- 汇编源码学习10-子程序调用-高精度整数加法
- 内部排序之二:冒泡排序和选择排序(改进优化,附完整源码)
- 汇编源码学习8-FAR-子程序远调用
- 汇编源码学习11-子函数模块-输出大整数
- 学习 C#线程同步lock,Monitor,Mutex,同步事件和等待句柄(上) 并且给出源码的改进版
- 汇编源码学习4-输入字符与输出字符