Advertisement
WSTI

ZadanieKoncowe

Jan 18th, 2013
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. include \masm32\include\masm32rt.inc
  2. SORT PROTO :DWORD, :DWORD
  3.  
  4. .data
  5.     chain db 32 dup(0)
  6. .code
  7.  
  8. start:
  9. invoke StdOut, chr$("====== Menu =======", 13, 10)
  10. invoke StdOut, chr$("1. Wprowadzanie lancucha znakow do tablicy", 13, 10)
  11. invoke StdOut, chr$("2. Wyswietlanie lancucha znakow z tablicy", 13, 10)
  12. invoke StdOut, chr$("3. Sortowanie wprowadzonego łancucha znakow", 13, 10)
  13. invoke StdOut, chr$("4. Czyszczenie tablicy", 13, 10)
  14. invoke StdOut, chr$("5. Wyczysc ekran", 13, 10)
  15. invoke StdOut, chr$("ESC> wyjscie z programu", 13, 10)
  16.  
  17. invoke ret_key
  18.  
  19. cmp AL, '1'
  20.     je wprowadz
  21. cmp AL, '2'
  22.     je show
  23. cmp AL, '3'
  24.     je sort
  25. cmp AL, '4'
  26.     je clean
  27. cmp AL, '5'
  28.     je clScreen
  29. cmp AL, 1Bh
  30.     je goExit
  31.  
  32. wprowadz:
  33.     jmp insert
  34.  
  35. show:
  36.     invoke StdOut, ADDR chain
  37.     jmp start
  38.  
  39. sort:
  40.     jmp sortchain
  41.  
  42. clean:
  43.     jmp cleanarr
  44.  
  45. clScreen:
  46.     cls
  47.     jmp start
  48.  
  49. goExit:
  50.     exit
  51.  
  52. insert:
  53.     invoke StdOut, chr$("Wprowadz lancuch znakow do posortowania", 13, 10)
  54.     invoke StdIn, ADDR chain, 32
  55.     push EAX
  56.     jmp start
  57.  
  58. sortchain:
  59.     invoke StdOut, chr$("Tablica posortowana", 13, 10)
  60.     pop EAX
  61.     invoke SORT, ADDR chain, EAX
  62.     push EAX
  63.     jmp start
  64.  
  65. cleanarr:
  66. pop EAX
  67. mov ESI, offset chain
  68.  
  69. xor BL, BL
  70. xor EBX, EBX
  71.  
  72. @@:
  73. mov [ESI], BL
  74. INC ESI
  75. INC EBX
  76. cmp EBX, EAX
  77.     ja start
  78. jmp @B
  79.  
  80.  
  81. SORT PROC z1:DWORD, z2:DWORD
  82. @@sortP:
  83.         MOV EAX, z2
  84.         XOR BL, BL
  85.         SUB AL, 1
  86.         MOV  ESI, z1
  87.         MOV EDI, ESI
  88.         ADD EDI, EAX
  89. @@sortG:
  90.         MOV AL, [ESI]
  91.         MOV AH, [ESI + 1]
  92.         CMP AL, AH
  93.         JLE @F
  94.             XCHG AL, AH
  95.             MOV BL, 1
  96.         @@:
  97.             MOV [ESI], AL
  98.             MOV [ESI + 1], AH
  99.             INC ESI
  100.             CMP ESI, EDI
  101.             JL @@sortG
  102.         CMP BL, 1
  103.         JE @@sortP  
  104.  
  105.    RET
  106. SORT ENDP
  107. end start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement