汇编实现冒泡排序

;用汇编实现 冒泡排序
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保存



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值