[ASM]Sortowanie

0

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
0

<ort>po prostu</ort> sortuje.... co chcesz wiedzieć więcej?? chcesz żeby ci opisać każdą linijkę??? [sciana]

1 użytkowników online, w tym zalogowanych: 0, gości: 1