直接插入排序是一种比较简单的排序。
原理是:
从第二个数开始,依次把每个数当作选定数,在选定数的前面,通过比较大小的方式找到选定数的正确位置,
把该位置之后到选定数之间的数均向后移一位,再通过交换,将选定数放入属于他的位置中
循环上述操作直到对除第一位以外的所有数都操作了一边,即完成排序。
下面我们来看看相应的汇编代码:
DATAS SEGMENT
ary dw 2,48,51,21,36,19,14,16,12,33
count dw 20
DATAS ENDS
STACKS SEGMENT
dw 20 dup(0)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
mov bx,2;bx记录操作次数,从第二个数开始操作
beginer:
cmp bx,count
jnb exit;超出比较次数则跳转
mov ax,ary[bx];用ax记录当前正在操作的数
cmp ax,ary[bx-2]
jnb tonext;如果该数比前一个数都大,则不用继续操作了
cando:
mov di,bx
sub di,2
acj:
cmp ax,ary[di]
jnb chang
mov dx