用汇编语言实现数据排序
摘要:汇编语言是计算机能够提供给用户使用的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。本文主要讨论如何利用汇编语言实现计算机程序设计中排序这种重要运算。
关键词:汇编语言;排序;冒泡排序
中图分类号:TP313 文献标识码:A文章编号:1007-9599 (2011) 16-0000-01
Sort Data with Assembly Language
Ren Hong,Wang Yunxia
(Information Technology Department of Xuanhua Science and Technology College,Zhangjiakou075100,China)
Abstract:The assembly language is a computer can provide to users the fastest and most effective use of language,is able to use all of your computer hardware features and can only directly control the hardware language This article discusses how to use assembly language in computer programming sort important operation.
Keywords:Assembly language;Sort;Bubble Sort
一、引言
排序是计算机程序设计中的一种重要运算,其功能是将一个数据元素的任意序列,重新排列成一个按关键字有序的序列。经过排序的数据可采用优化的算法提高程序的执行效率;增加输出数据的清晰度,便于信息检索;同时经过排序后的数据往往还隐含一些特殊的含义,为用户提供有价值的信息。
汇编语言是计算机能够提供给用户使用的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言,因而,对于程序的空间和时间要求很高的场合,汇编语言是必不可少的。本文将主要讨论如何利用汇编语言实现数据的排序功能。
二、算法分析
设计要求:编写一个排序程序,实现10个数据的从小到大的升序排列。
程序算法:气泡排序是一种常用的排序方法,它的规则是:表中相邻两元素一一比较,并把大值元素向下交换,直至表尾(大值元素落底),此时,称为一次冒泡(程序中一次大循环)。以后重复冒泡排序,直至最小元素冒到表顶为止。若在一次冒泡排序中没有出现两元素交换(设标志为0),则停止排序。
具体算法:该程序采用双重循环结构,其中DL用来设置外循环次数,CX用来设置内循环次数,DH设为交换标志。其中内部循环L1主要完成一次冒泡过程,即对相邻两个元素进行比较。外循环L2主要用来控制整个冒泡的次数,即n-1次。
算法描述如下:
datasegment
memdb 10,9,8,7,6,5,4,3,2,1
len dw$-mem
dataends
codesegment
mainproc far
assume cs:code,ds:data
start:push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
mov dh,1
mov dl,len
Lo: ordh,dh
JzL3
mov dh,0
mov cx,len
sub cx,bx
mov si,offsetmem
L1:mov al,[si]
Incsi
cmp al,[si]
jbeL2
xchg al,[si]
mov [si-1],al
mov dh,1
L2:loop L1
incbx
decdl
jnz L0
L3: ret
code ends
endstart
三、算法分析
空间效率:冒牌法排序仅用了一个辅助单元,即空间复杂度为O(1)。
时间效率:
待排元素状态 “比较”次数 “移动”次数
正序 n-1 0
逆序 n(n-1)/2 3n(n-1)/2
若待排序元素处于随机状态,则冒泡法排序的平均时间复杂度为O(n2)。
稳定性:冒泡排序是一种稳定排序方法。
四、结束语
本文主要介绍了采用汇编语言实