Online Compiler Nasm

section .data fmt db "%d %d", 0 yes db "YES", 10, 0 no db "NO", 10, 0 section .bss x resd 1 y resd 1 min_x resd 1 min_y resd 1 max_x resd 1 max_y resd 1 section .text global main extern scanf, printf main: push ebx push y push x push fmt call scanf add esp, 12 mov eax, [x] mov [min_x], eax mov [max_x], eax mov eax, [y] mov [min_y], eax mov [max_y], eax mov ebx, 3 rectangle_loop: push y push x push fmt call scanf add esp, 12 mov edi, [x] mov esi, [max_x] cmp esi, edi cmovl esi, edi mov [max_x], esi mov esi, [min_x] cmp esi, edi cmovg esi, edi mov [min_y], esi mov [min_x], esi mov edi, [y] mov esi, [max_y] cmp esi, edi cmovl esi, edi mov [max_y], esi mov esi, [min_y] cmp esi, edi cmovg esi, edi mov [min_y], esi dec ebx jnz rectangle_loop push y push x push fmt call scanf add esp, 12 mov eax, [x] mov ebx, [y] cmp eax, [min_x] jle noway cmp eax, [max_x] jge noway cmp ebx, [min_y] jle noway cmp ebx, [max_y] jge noway push yes call printf add esp, 4 pop ebx xor eax, eax ret noway: push no call printf add esp,4 xor eax,eax ret
1) Этот код считывает координаты четырёх точек, определяет минимальные и максимальные значения по осям X и Y среди первых трёх точек, а затем проверяет, находится ли четвёртая точка внутри прямоугольника, образованного этими границами. Результат выводится как "YES" или "NO".

2) Обрати внимание, что в блоке обработки `min_x` есть ошибка: значение записывается не только в `[min_x]`, но и ошибочно в `[min_y]`. Проверь инструкции после метки `cmovg`.  
Также учти, что для корректной работы с числами со знаком используются условия `jle` и `jge`, но для обновления минимумов/максимумов в цикле применяются `cmovl` (меньше) и `cmovg` (больше) — убедись, что это соответствует замыслу.