汇编实现冒泡排序

来源:互联网 发布:西班牙内战 知乎 编辑:程序博客网 时间:2024/05/01 02:54
;用汇编实现 冒泡排序
data segment
ary db 6,2,5,1,3,4,9,8,7
aryCount dw $-ary
data ends




code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov bx,0



mov cx,aryCount
outLoop:
inc bx
push cx
mov cx,aryCount
sub cx,bx                                    ;每次外循环循环一次内循环少比较一次
lea si,ary                                  ;地址指向
;---------------------------------------------------下面是内循环
innerLoop:
mov al,[si]
cmp al,[si+1]
jge next              ;有符号数大于等于则不做操作
xchg al,[si+1]
xchg al,[si]
next:
inc si


loop innerLoop


;---------------------------------------------------
pop cx
loop outLoop   ;判断cx的值若为0则结束循环
mov ax,4c00h
int 21h
code ends

end start


源代码在上面 下面分析下 怎么实现冒泡排序的

ary 获取数组元素

运用 $-变量名 来获取数组长度


然后运用两个loop循环

outLoop:


loop outLoop

外循环 循环数组长度次 每次将一个最小值冒出


内循环

innerLoop:


loop innerLoop

内循环 具体实现每次冒出及交换元素


需要注意的是这里两次都要用到计数器 cx 所以选择将cx在外循环中 push 与 pop保存



0 0
原创粉丝点击