;bubble sort
assume cs:code,ds:data

data segment
array db 56h,49h,99h,67h,97h
count equ 5
data ends

code segment
start:
mov ax,data
mov ds,ax

mov si,offset array
mov cl,count
dec cl
;<n-1 remember

xor ax,ax  ;ah=i , al=j
	   ;cl=n

lbl1:
cmp ah,cl
jz pend
        lbl2:
        cmp al,cl
        jz lbl4
              xor bx,bx
	      mov bl,al
              add bx,si ;bx is address al+si

              mov dl,[bx]
              inc bx
              mov dh,[bx]
              cmp dl,dh
              jbe lbl3        ;jle didn't work.
             
	      mov [bx],dl
              dec bx
              mov [bx],dh
     
              lbl3:
              inc al
              jmp lbl2
lbl4:
inc ah
jmp lbl1


pend:

;display
extrn showb:near
mov si,offset array

mov cx,count
again:
 mov al,[si]
 call showb
 inc si
loop again



mov ax,4C00h
int 21h
code ends
end start

