Online Compiler Nasm

extern io_get_dec, io_print_dec, io_print_char, io_newline section .bss min resd 500000 max resd 500000 section .data N dd 0 s_count dd 0 b_count dd 0 prev dd 0 cur dd 0 next dd 0 section .text global main main: call io_get_dec mov [N], eax cmp eax, 3 jl zero_result ; читаем первые два элемента call io_get_dec mov [prev], eax call io_get_dec mov [cur], eax mov edi, 1 ; i = 1 mov ebx, [N] sub ebx, 1 ; N-1 loop_check: cmp edi, ebx jge finish_scan call io_get_dec mov [next], eax mov eax, [cur] mov edx, [prev] mov esi, [next] ; проверка минимума cmp eax, edx jnl check_max cmp eax, esi jnl check_max mov ecx, [s_count] mov [min + ecx*4], edi inc dword [s_count] check_max: cmp eax, edx jng update_vals cmp eax, esi jng update_vals mov ecx, [b_count] mov [max + ecx*4], edi inc dword [b_count] update_vals: mov eax, [cur] mov [prev], eax mov eax, [next] mov [cur], eax inc edi jmp loop_check finish_scan: mov eax, [s_count] call io_print_dec call io_newline xor edi, edi print_min: cmp edi, [s_count] jge print_max_count mov eax, [min + edi*4] call io_print_dec mov al, ' ' call io_print_char inc edi jmp print_min print_max_count: call io_newline mov eax, [b_count] call io_print_dec call io_newline xor edi, edi print_max: cmp edi, [b_count] jge end_prog mov eax, [max + edi*4] call io_print_dec mov al, ' ' call io_print_char inc edi jmp print_max end_prog: call io_newline ret zero_result: mov eax, 0 call io_print_dec call io_newline mov eax, 0 call io_print_dec call io_newline ret
1) Этот код считывает последовательность целых чисел, находит индексы локальных минимумов и максимумов (элементов, которые меньше/больше обоих соседей), а затем выводит их количество и сами индексы.

2) Обрати внимание, что индексация элементов начинается с 0, но при сохранении позиций минимумов/максимумов в массивы `min` и `max` используется значение `edi`, которое является счётчиком цикла и соответствует индексу текущего элемента в последовательности. Убедись, что понимаешь, почему в цикле `loop_check` граница установлена как `N-1`, а не `N`.