; 设一维数组LIST1,LIST2,LIST3中分别放了若干个单字节长的带符号数
;试编制程序使3个表中的数据都按降序排列。表中元素的个数分别在
;NUM1,NUM2,NUM3三个单元中
mlist macro x
mov bx,offset LIST&x
mov cl,COUNT&x
call bubble
endm
data segment
LIST1 db -2,1,8
COUNT1 db $-LIST1
LIST2 db 3,4,6,-1,5
COUNT2 db $-LIST2
LIST3 db 5,8,10,20,-5,7
COUNT3 db $-LIST3
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mlist 1
mlist 2
mlist 3
mov ax,4c00h
int 21h
;选择排序
bubble proc near
push si
push cx
push dx
push bx
push ax
mov di,0
dec cx
L1:;外层循环
push cx
push di
mov si,di
mov al,[bx][si]
L2: ;内层循环
cmp al,[bx][di+1]
jge NEXT
xchg al,[bx][di+1]
mov [bx][si],al
NEXT:
add di,1
loop L2;内层循环
pop di
pop cx
add di,1
loop L1;外层循环
pop ax
pop bx
pop dx
pop cx
pop si
ret
bubble endp
code ends
end start
结果: