Wacky_rubia

Untitled

Nov 15th, 2015
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.49 KB | None | 0 0
  1. model small
  2. .stack 100h
  3. .data
  4. ar db 30,90,87,50,31,77,27,120
  5. len db $ - ar
  6. .code
  7. start:
  8. assume cs:@code, ds:@data
  9. mov ax, @data
  10. mov ds, ax
  11. mov es, ax
  12.  
  13. xor ax, ax
  14. mov al, len
  15. dec ax
  16.  
  17. mov dx, 0
  18.  
  19. push dx
  20. push ax
  21.  
  22. call qsort
  23.  
  24. xor ax, ax
  25. mov al, len
  26. push ax
  27. call big_prnt
  28. pop ax
  29.  
  30. mov ax, 4c00h
  31. int 21h
  32.  
  33. big_prnt proc far
  34. mov bp, sp
  35. mov cx, [bp + 4]
  36.  
  37. lp:
  38. xor ax, ax
  39. mov al, len
  40. sub ax, cx
  41.  
  42. mov si, ax
  43. push cx
  44. xor bx, bx
  45. mov bl, ar[si]
  46. push bx
  47. call prnt
  48. pop cx
  49. pop cx
  50.  
  51. xor dx, dx
  52. mov dl, ' '
  53. xor ax, ax
  54. mov ah, 02h
  55. int 21h
  56.  
  57. loop lp
  58.  
  59. ret
  60.  
  61. big_prnt endp
  62.  
  63. prnt proc far
  64. mov bp, sp
  65. mov ax, [bp + 4]
  66.  
  67. xor dx, dx
  68.  
  69. mov bx, 10
  70. div bx
  71. add dx, 30h
  72. push dx
  73.  
  74. mov cx, ax
  75.  
  76. cmp cx, 0
  77. jg rpt
  78.  
  79. rt1:
  80. pop dx
  81. mov ah, 02h
  82. int 21h
  83.  
  84. ret
  85.  
  86. rpt:
  87. push cx
  88. call prnt
  89. pop cx
  90. jmp rt1
  91. prnt endp
  92.  
  93. qsort proc far
  94. mov bp, sp
  95.  
  96. mov ax, [bp + 6] ; left
  97. mov dx, [bp + 4] ; right
  98.  
  99. add ax, dx ; left + right
  100. mov dl, 2 ; divisor
  101. div dl ; dividing
  102.  
  103. mov ah, 0 ; убираем остаток
  104.  
  105. xor bx, bx
  106. mov si, ax
  107. mov bl, ar[si] ; element m
  108.  
  109. mov ax, [bp + 6] ; left
  110. mov dx, [bp + 4] ; right
  111.  
  112. p1:
  113. dec ax
  114. w1:
  115. inc ax
  116. mov si, ax
  117. cmp ar[si], bl
  118. jl w1
  119.  
  120. inc dx
  121. w2:
  122. dec dx
  123. mov si, dx
  124. cmp ar[si], bl
  125. jg w2
  126.  
  127. cmp ax, dx
  128. jle c1
  129.  
  130. cmp [bp + 6], dx
  131. jl lrec
  132.  
  133. w3:
  134. mov bp, sp
  135. cmp ax, [bp + 4]
  136. jl rrec
  137.  
  138. w4:
  139. ret 4
  140.  
  141.  
  142. c1:
  143. mov si, ax ; si - ax
  144. mov di, dx ; di - dx
  145. mov cl, ar[si]
  146. mov ch, ar[di]
  147. mov ar[si], ch
  148. mov ar[di], cl
  149. inc ax
  150. dec dx
  151. jmp p1
  152.  
  153. lrec:
  154. push ax dx
  155. push [bp + 6]
  156. push dx
  157. call qsort
  158. pop dx ax
  159. jmp w3
  160.  
  161. rrec:
  162. push ax
  163. push [bp + 4]
  164. call qsort
  165. jmp w4
  166. qsort endp
  167.  
  168.  
  169. end start
Advertisement
Add Comment
Please, Sign In to add comment