Witam. Sorki ze zawracam wam glowe tak banalnym problemem ale zalezaloby mi aby ktos mi pomogl i opisal linijka po linijce co robi ta procedura.
;; ;;Procedura sortowania_przez wybor;;
sort_s proc
;;procedura porzadkuje tablice o nazwie 'tablica' zawierajacej 'ile' elementow.
;; te zmienne musza byc dostepne w programie
;;zmienne potrzebne podczas sortowania
min db 0 ;; minimum przebiegu
licz dw 0 ;; licznik przebiegow
min_i dw 0 ;; indeks do najmniejszego el.
mov si,0 ;; aktualny wskaznik (indeks) po tablicy
petla1:
mov si,licz; ;; ustawienia poczatkowe, dla kazdego przebiegu
mov al,tablica[cs:si]
mov min,al
mov ax,licz
mov min_i,ax
petla2:
inc si
mov al,tablica[cs:si]
cmp al,min ;; wyszukanie najmniejszego elementu
ja wieksze
mov min_i,si
mov min,al
wieksze:
mov ax,si
inc ax
cmp ile,ax
jne petla2
mov ax,licz
cmp ax,min_i ;;porownanie wartosci rejestru z najmniejszym elementem
je nie_zamieniaj ;;jesli kolejny element jest w dobrym miejscu
mov si,licz ;;zamiana najmnijeszego elementu z el. o indeksie licz
mov ah,tablica[cs:si]
mov si,min_i
mov al,tablica[cs:si]
mov tablica[cs:si],ah
mov si,licz
mov tablica[cs:si],al
nie_zamieniaj:
inc licz ;;zwieksza licznik o 1
mov ax,licz
inc ax
cmp ax,ile ;;sprawdzenie czy tablica zostala juz przeszukana
jne petla1 ;;jump not equal, jezli si<>0 to skocz do petla1
ret
endp