Я работал над программой для сортировки вставок, но я не могу заставить ее работать. Может кто-нибудь сказать мне, что я делаю не так? Просто игнорируйте процедуру enterArray
, я просто пытаюсь выяснить алгоритм прямо сейчас.
TITLE Insertion Sort (main.asm)
INCLUDE Irvine32.inc
.data
myArray SDWORD 12, 9, 15, 5
str1 byte "Enter the array: " ,0
str2 byte "The sorted array is: ",0
.code
main PROC
call Clrscr
;call enterArray
call InsertionSort
exit
main ENDP
enterArray PROC
;reads the array from the console
pushad
mov edi, OFFSET myArray
mov edx, OFFSET str1
call WriteString
call ReadInt
mov [edi], eax
add edi, 4
popad
ret
enterArray ENDP
InsertionSort PROC
pushad
mov ecx, SIZEOF myArray -1
mov eax, OFFSET myArray
outterloop:
mov edx,myArray[eax]
mov ebx,eax
beginwhile:
cmp ebx,0
JE endwhile
cmp myArray[ebx-4],edx
JNG endwhile
mov edx,myArray[ebx]
mov myArray[ebx-4],edx
sub edx,4
JMP beginwhile
endwhile:
add eax,4
LOOP outterloop
popad
ret
InsertionSort ENDP
END main