_takumi

blond.asm

Mar 17th, 2022 (edited)
535
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. %include "io.inc"
  2.  
  3. section .bss
  4.     arr     resd 500000
  5.     n       resd 1
  6.     max_cnt resd 1
  7.     min_cnt resd 1
  8.     max_arr resd 500000
  9.     min_arr resd 500000
  10.  
  11. section .text
  12. global CMAIN
  13. CMAIN:
  14.     mov ebp, esp
  15.     GET_UDEC 4, [n]
  16.     xor ecx, ecx
  17. .readarr:
  18.     cmp ecx, [n]
  19.     jae .readarr_end
  20.     GET_UDEC 4, [arr + 4 * ecx]
  21.     inc ecx
  22.     jmp .readarr
  23. .readarr_end:
  24.     mov ecx, 1
  25.     dec dword [n]
  26. .loop:
  27.     cmp ecx, [n]
  28.     jge .loop_end; jge вместо jae на случай, если размер массива равен 0
  29.     mov eax, [arr + 4 * ecx - 4]
  30.     mov ebx, [arr + 4 * ecx + 4]
  31.     cmp eax, ebx
  32.     jge .endif1
  33.     xchg eax, ebx; теперь в еах наибольший из двух соседних к текущему элементов, а в ebx наименьший
  34. .endif1:
  35.     cmp [arr + 4 * ecx], eax
  36.     jl .endif2
  37.     mov edx, [max_cnt]
  38.     mov [max_arr + 4 * edx], ecx
  39.     inc dword [max_cnt]
  40. .endif2:
  41.     cmp [arr + 4 * ecx], ebx
  42.     jg .endif3
  43.     mov edx, [min_cnt]
  44.     mov [min_arr + 4 * edx], ecx
  45.     inc dword [min_cnt]
  46. .endif3:
  47.     inc ecx
  48.     jmp .loop
  49. .loop_end:
  50.     PRINT_UDEC 4, [min_cnt]
  51.     NEWLINE
  52.     xor ecx, ecx
  53. .printmin:
  54.     cmp ecx, [min_cnt]
  55.     jae .printmin_end
  56.     PRINT_UDEC 4, [min_arr + 4 * ecx]
  57.     PRINT_CHAR 32
  58.     inc ecx
  59.     jmp .printmin
  60. .printmin_end:
  61.     cmp dword [min_cnt], 0
  62.     je .endif4
  63.     NEWLINE
  64. .endif4:
  65.     PRINT_UDEC 4, [max_cnt]
  66.     NEWLINE
  67.     xor ecx, ecx
  68. .printmax:
  69.     cmp ecx, [max_cnt]
  70.     jae .printmax_end
  71.     PRINT_UDEC 4, [max_arr + 4 * ecx]
  72.     PRINT_CHAR 32
  73.     inc ecx
  74.     jmp .printmax
  75. .printmax_end:
  76.     xor eax, eax
  77.     ret
Add Comment
Please, Sign In to add comment