Witam mam program napisany pod Masm32.

; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
    include \masm32\include\masm32rt.inc
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

comment

    bubble_sort PROTO :DWORD,:DWORD

    printarr MACRO parr,cnt
      LOCAL lbl
      push ebx
      push esi
      mov esi, parr
      mov ebx, cnt
    lbl:
      print str$([esi]),13,10
      add esi, 4
      sub ebx, 1
      jnz lbl
      pop esi
      pop ebx
    ENDM

    .data?
      value dd ?

    .data
      narr dd 1,9,2,8,3,7,4,6,5,0   ; 10 unsorted numbers

    .code

start:
   
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

    call main
    inkey
    exit

; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««

main proc

    print "Unsorted",13,10

    printarr OFFSET narr,LENGTHOF narr

    invoke bubble_sort,OFFSET narr,LENGTHOF narr

    print chr$(13,10)
    print "Sorted",13,10

    printarr OFFSET narr,LENGTHOF narr

    ret

main endp


bubble_sort proc parr:DWORD,cnt:DWORD

    push ebx
    push esi

    sub cnt, 1                

  lbl0:
    mov esi, parr               
    xor edx, edx              
    mov ebx, cnt           

  lbl1:
    mov eax, [esi]                
    mov ecx, [esi+4]
    cmp eax, ecx                
    jl lbl2                     

    mov [esi], ecx              
    mov [esi+4], eax
    mov edx, 1                  

  lbl2:
    add esi, 4                 
    sub ebx, 1                  
    jnz lbl1

    test edx, edx              
    jnz lbl0                    

    pop esi
    pop ebx

    ret

bubble_sort endp

end start

I mam pytanie dlaczego sortuje tylko dobrze te liczby co pisałem...??? Proszę o odpowiedz....