Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %include "io.inc"
- section .bss
- arr resd 500000
- n resd 1
- max_cnt resd 1
- min_cnt resd 1
- max_arr resd 500000
- min_arr resd 500000
- section .text
- global CMAIN
- CMAIN:
- mov ebp, esp
- GET_UDEC 4, [n]
- xor ecx, ecx
- .readarr:
- cmp ecx, [n]
- jae .readarr_end
- GET_UDEC 4, [arr + 4 * ecx]
- inc ecx
- jmp .readarr
- .readarr_end:
- mov ecx, 1
- dec dword [n]
- .loop:
- cmp ecx, [n]
- jge .loop_end; jge вместо jae на случай, если размер массива равен 0
- mov eax, [arr + 4 * ecx - 4]
- mov ebx, [arr + 4 * ecx + 4]
- cmp eax, ebx
- jge .endif1
- xchg eax, ebx; теперь в еах наибольший из двух соседних к текущему элементов, а в ebx наименьший
- .endif1:
- cmp [arr + 4 * ecx], eax
- jl .endif2
- mov edx, [max_cnt]
- mov [max_arr + 4 * edx], ecx
- inc dword [max_cnt]
- .endif2:
- cmp [arr + 4 * ecx], ebx
- jg .endif3
- mov edx, [min_cnt]
- mov [min_arr + 4 * edx], ecx
- inc dword [min_cnt]
- .endif3:
- inc ecx
- jmp .loop
- .loop_end:
- PRINT_UDEC 4, [min_cnt]
- NEWLINE
- xor ecx, ecx
- .printmin:
- cmp ecx, [min_cnt]
- jae .printmin_end
- PRINT_UDEC 4, [min_arr + 4 * ecx]
- PRINT_CHAR 32
- inc ecx
- jmp .printmin
- .printmin_end:
- cmp dword [min_cnt], 0
- je .endif4
- NEWLINE
- .endif4:
- PRINT_UDEC 4, [max_cnt]
- NEWLINE
- xor ecx, ecx
- .printmax:
- cmp ecx, [max_cnt]
- jae .printmax_end
- PRINT_UDEC 4, [max_arr + 4 * ecx]
- PRINT_CHAR 32
- inc ecx
- jmp .printmax
- .printmax_end:
- xor eax, eax
- ret
Add Comment
Please, Sign In to add comment