1. 程式人生 > >彙編-氣泡排序

彙編-氣泡排序

氣泡排序程式實現:使陣列的數從大到小的順序排序

data segment
	a	dw	20 dup(?)		;20個數據比較
data ends

code segment
	assume cs:code, ds:data
main proc far

start:
	;set up stack for return		;保留現場,資料入棧
	push	ds
	sub	ax, ax
	push	ax							;??

	mov	ax, data
	mov	ds, ax

;program started--------------------------------------------------

	mov	cx, 20		;n個數據需要比較的最大次數=n(n+1)/2
	dec	cx

loop1:					
	*mov	di, cx*
	mov	bx, 0
	mov cx,19
*loop2:
	mov	ax, a[bx]
	cmp	ax, a[bx+2]
	jge	continue
	xchg	ax, a[bx+2]
	mov	a[bx], ax

continue:
	add	bx, 2
	loop	loop2*
	*mov	cx, di*
	loop	loop1

	ret
main endp

code ends
	end start