Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %include "io.inc"
- section .bss
- a resd 500003
- a1 resd 500003
- a2 resd 500003
- n resd 1
- l1 resd 1 ;кол-во локальных минимумов
- l2 resd 1 ;кол-во локальных максимумов
- section .text
- global CMAIN
- CMAIN:
- ;Считывание кол-ва чисел в последовательности.
- GET_DEC 4, n
- ;Обработка случая, когда n равно 0
- cmp dword[n], 0
- jz .writeRes
- ;Считываем последовательность в цикле.
- mov ecx, 0 ;ecx - переменная цикла.
- .for:
- GET_DEC 4, eax
- mov dword[a+ecx*4], eax
- inc ecx
- cmp ecx, dword[n]
- jnz .for
- ;В цикле поочереди проверяем число на лок. мин и макс.
- mov ecx, 0 ;ecx - переменная цикла.
- dec dword[n]
- .for_ij:
- inc ecx
- cmp ecx, dword[n]
- jns .end_for
- mov eax, dword[a+4*ecx]; текущее число
- ;Проверка на лок. минимум
- cmp eax, dword[a+4*ecx-4]
- jns .endCheckMin
- cmp eax, dword[a+4*ecx+4]
- jns .endCheckMin
- ;Добавление числа в лок. минимумы
- mov ebx, dword[l1]
- mov dword[a1+ebx*4], ecx
- inc dword[l1]
- .endCheckMin:
- ;Проверка на лок. максимум
- cmp dword[a+4*ecx-4], eax
- jns .endCheckMax
- cmp dword[a+4*ecx+4], eax
- jns .endCheckMax
- ;Добавление в лок. максимумы
- mov ebx, dword[l2]
- mov dword[a2+ebx*4], ecx
- inc dword[l2]
- .endCheckMax:
- jmp .for_ij
- .end_for:
- .writeRes:
- ;Вывод кол-ва лок. минимумом.
- PRINT_DEC 4, l1
- NEWLINE
- ;Если l1 равно нулю, то переходим на метку .notMin
- cmp dword[l1], 0
- jz .notMin
- ;Обнуляем переменную цикла.
- mov ecx, 0
- .forMin:
- ;Вычисляем eax = a1[ecx]
- mov eax, dword[a1+ecx*4]
- PRINT_DEC 4, eax
- PRINT_CHAR ' '
- inc ecx
- cmp ecx, dword[l1]
- jnz .forMin
- NEWLINE
- .notMin:
- ;Вывод кол-ва лок. максимумов.
- PRINT_DEC 4, l2
- NEWLINE
- ;Если l2 равно нулю, то переходим на метку .notMax
- cmp dword[l2], 0
- jz .notMax
- ;Обнуляем переменную цикла.
- mov ecx, 0
- .forMax:
- ;Вычисляем eax = a2[ecx]
- mov eax, dword[a2+ecx*4]
- PRINT_DEC 4, eax
- PRINT_CHAR ' '
- inc ecx
- cmp ecx, dword[l2]
- jnz .forMax
- NEWLINE
- .notMax:
- xor eax, eax
- ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement