📄 p190_n.asm
字号:
;p190_n.asm,优化冒泡法
;******************************************
data segment
addr dw 1,3,5,7,8,9,10,11,12,15
savecnt dw ?
data ends
;*******************************************
program segment
bubble proc far
assume cs:program,ds:data
start: push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
mov cx,10
mov savecnt,cx
init: mov bx,1 ;交换标志,最终为0表进行了交换。
dec savecnt ;外层循环计数器
jz sorted
mov cx,savecnt ;当再次进入外层循环,则最后若干元素已经升序
mov di,offset addr-2 ;ds:di为串起始地址
next: add di,2
mov ax,[di]
cmp [di+2],ax ;[di+2]-[di]
jae cont ;两数已经升序
xchg [di+2],ax ;使两数升序
mov [di],ax
sub bx,bx ;因为交换,bx=0
cont: loop next
cmp bx,0 ;判是否进行过交换。
je init ;因为交换过,转到init继续。
sorted: ret ;因为未交换,说明已经全部升序。
bubble endp
program ends
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -