Advertisement
intsashka

Untitled

Apr 30th, 2016
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. %include "io.inc"
  2.  
  3. section .bss
  4.     x resd 1000
  5.     y resd 1
  6.     fr resd 1
  7.     fw resd 1
  8.     len resd 1
  9. section .rodata
  10.     f_scanf db "%d", 0
  11.     f_printf db "%d ", 0
  12.     f_r db "r", 0
  13.     f_input db "input.txt", 0
  14.     f_w db "w", 0
  15.     f_output db "output.txt", 0
  16.      
  17. section .text
  18. CEXTERN fopen
  19. CEXTERN fscanf
  20. CEXTERN fprintf
  21. CEXTERN qsort
  22. CEXTERN fclose
  23.  
  24. global CMAIN
  25. compare:
  26.     push ebp
  27.     mov ebp, esp
  28.    
  29.     push ebx
  30.    
  31.     mov eax, dword[ebp+8]
  32.     mov eax, dword[eax]
  33.     mov ebx, dword[ebp+12]
  34.     mov ebx, dword[ebx]
  35.     cmp eax, ebx
  36.     jg .L1
  37.     jl .L2
  38.     xor eax, eax
  39.     jmp .L3
  40. .L1:
  41.     mov eax, 1
  42.     jmp .L3
  43. .L2:
  44.     mov eax, -1
  45. .L3:
  46.     pop ebx
  47.     pop ebp
  48.     ret
  49.  
  50. CMAIN:
  51.     mov ebp, esp
  52.     and esp, -16
  53.     sub esp, 8
  54.    
  55.     push f_r
  56.     push f_input
  57.     call fopen
  58.     mov dword[fr], eax
  59.  
  60.     add esp, 8
  61.     push f_w
  62.     push f_output
  63.     call fopen
  64.     mov dword[fw], eax
  65.  
  66.     xor ebx, ebx
  67.     mov dword[esp+4], x
  68.     mov ebx, dword[esp+4]
  69.     mov dword[y], ebx
  70.     xor ebx, ebx
  71. .L4:    
  72.     add esp, 12
  73.     mov eax, dword[y]
  74.     push eax
  75.     push f_scanf
  76.    
  77.     push dword[fr]
  78.     call fscanf
  79.     cmp eax, 1
  80.     jne .END
  81.     mov eax, dword[y]
  82.     add eax, 4
  83.     mov dword[y], eax
  84.     add dword[esp+4], 4
  85.     inc ebx
  86.     jmp .L4
  87. .END:
  88.     mov dword[len], ebx    
  89.     mov ebx, 4
  90.     push compare
  91.     push ebx
  92.     push dword[len]
  93.     push x
  94.     call qsort
  95.     mov ebx, 0  
  96. .L5:    
  97.     add esp, 12
  98.     mov eax, dword[x+ebx*4]
  99.    
  100.     push eax
  101.     push f_printf
  102.     push dword[fw]
  103.     call fprintf
  104.     inc ebx
  105.     cmp ebx, dword[len]
  106.     jl .L5
  107. .END2:
  108.     mov esp, ebp
  109.     xor eax, eax
  110.     ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement