data segment
a dw 2, 5, 6, 8
l equ $-a
data ends
code segment
assume cs:code , ds:data
start:
mov cx, l
shr cx, 1 ; 逻辑循环右移指令,移动1位,相当于除以二
dec cx ;循环n-1次
loop1:
push cx
xor bx, bx ;两个数进行异或运算,结果存放在目的操作数中;这相当于把bx制零
loop2:
mov ax, a[bx]
cmp ax, a[bx+2]
jng continue ;不大于则跳转,否则交换;通过cf和zf判断
xchg ax, a[bx+2] ;xchg 指令两个操作数不能同时为内存变量
xchg ax, a[bx] ;也不能用段寄存器
continue:
inc bx ;一次操作一个字,所以自增两次
inc bx
loop loop2
pop cx
loop loop1
mov ax, 4c00h
int 21h
code ends
end start
汇编用循环嵌套实现冒泡排序
最新推荐文章于 2023-06-29 14:58:22 发布