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....