Online Compiler Nasm

extern io_get_dec, io_print_dec, io_print_string section .bss a_x resd 1 a_y resd 1 b_x resd 1 b_y resd 1 c_x resd 1 c_y resd 1 d_x resd 1 d_y resd 1 p_x resd 1 p_y resd 1 section .data yes db 'YES', 0 no db 'NO', 0 section .text global main main: call io_get_dec mov [a_x], eax call io_get_dec mov [a_y], eax call io_get_dec mov [b_x], eax call io_get_dec mov [b_y], eax call io_get_dec mov [c_x], eax call io_get_dec mov [c_y], eax call io_get_dec mov [d_x], eax call io_get_dec mov [d_y], eax call io_get_dec mov [p_x], eax call io_get_dec mov [p_y], eax mov eax, dword[a_x] mov ebx, dword[b_x] cmp eax, ebx cmovge eax, ebx cmovle edi, ebx mov ebx, dword[c_x] cmp eax, ebx cmovge eax, ebx cmovle edi, ebx mov ebx, dword[d_x] cmp eax, ebx cmovge eax, ebx cmovle edi, ebx mov dword[a_x], eax; a_x=min(x) mov dword[c_x], edi; c_x=max(x) mov eax, dword[a_y] mov ebx, dword[b_y] cmp eax, ebx cmovge eax, ebx cmovle edi, ebx mov ebx, dword[c_y] cmp eax, ebx cmovge eax, ebx cmovle edi, ebx mov ebx, dword[d_y] cmp eax, ebx cmovge eax, ebx cmovle edi, ebx mov dword[a_y], eax; a_y=min(y) mov dword[c_y], edi; c_y=max(y) mov eax, dword[a_x] mov ebx, dword[p_x] cmp eax, ebx; a_x <= p_x jg .false mov eax, dword[c_x] mov ebx, dword[p_x] cmp eax, ebx; p_x <= c_x jl .false mov eax, dword[a_y] mov ebx, dword[p_y] cmp eax, ebx; a_y <= p_y jg .false mov eax, dword[c_y] mov ebx, dword[p_y] cmp eax, ebx; p_y <= c_y jl .false mov eax, yes call io_print_string jmp .done .false: mov eax, no call io_print_string .done: xor eax, eax ret
1) Этот код проверяет, находится ли точка P внутри прямоугольника, заданного четырьмя точками A, B, C, D. Сначала он находит минимальные и максимальные координаты X и Y среди этих точек, чтобы определить границы прямоугольника. Затем проверяет, лежит ли точка P внутри этих границ.

2) Подсказки:
- Обрати внимание, что регистр `edi` используется для хранения максимального X, но перед поиском максимального Y он не сбрасывается, что может привести к ошибке.
- Для поиска минимума и максимума координат убедись, что регистры инициализированы правильно перед каждым циклом сравнений.