Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- include \masm32\include\masm32rt.inc
- SORT PROTO :DWORD, :DWORD
- .data
- chain db 32 dup(0)
- .code
- start:
- invoke StdOut, chr$("====== Menu =======", 13, 10)
- invoke StdOut, chr$("1. Wprowadzanie lancucha znakow do tablicy", 13, 10)
- invoke StdOut, chr$("2. Wyswietlanie lancucha znakow z tablicy", 13, 10)
- invoke StdOut, chr$("3. Sortowanie wprowadzonego łancucha znakow", 13, 10)
- invoke StdOut, chr$("4. Czyszczenie tablicy", 13, 10)
- invoke StdOut, chr$("5. Wyczysc ekran", 13, 10)
- invoke StdOut, chr$("ESC> wyjscie z programu", 13, 10)
- invoke ret_key
- cmp AL, '1'
- je wprowadz
- cmp AL, '2'
- je show
- cmp AL, '3'
- je sort
- cmp AL, '4'
- je clean
- cmp AL, '5'
- je clScreen
- cmp AL, 1Bh
- je goExit
- wprowadz:
- jmp insert
- show:
- invoke StdOut, ADDR chain
- jmp start
- sort:
- jmp sortchain
- clean:
- jmp cleanarr
- clScreen:
- cls
- jmp start
- goExit:
- exit
- insert:
- invoke StdOut, chr$("Wprowadz lancuch znakow do posortowania", 13, 10)
- invoke StdIn, ADDR chain, 32
- push EAX
- jmp start
- sortchain:
- invoke StdOut, chr$("Tablica posortowana", 13, 10)
- pop EAX
- invoke SORT, ADDR chain, EAX
- push EAX
- jmp start
- cleanarr:
- pop EAX
- mov ESI, offset chain
- xor BL, BL
- xor EBX, EBX
- @@:
- mov [ESI], BL
- INC ESI
- INC EBX
- cmp EBX, EAX
- ja start
- jmp @B
- SORT PROC z1:DWORD, z2:DWORD
- @@sortP:
- MOV EAX, z2
- XOR BL, BL
- SUB AL, 1
- MOV ESI, z1
- MOV EDI, ESI
- ADD EDI, EAX
- @@sortG:
- MOV AL, [ESI]
- MOV AH, [ESI + 1]
- CMP AL, AH
- JLE @F
- XCHG AL, AH
- MOV BL, 1
- @@:
- MOV [ESI], AL
- MOV [ESI + 1], AH
- INC ESI
- CMP ESI, EDI
- JL @@sortG
- CMP BL, 1
- JE @@sortP
- RET
- SORT ENDP
- end start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement