Online Compiler Nasm

extern io_get_dec, io_print_dec, io_print_string section .bss x1 resd 1 y1 resd 1 x2 resd 1 y2 resd 1 x3 resd 1 y3 resd 1 section .data dot db ".", 0 section .text global main main: call io_get_dec mov [x1], eax call io_get_dec mov [y1], eax call io_get_dec mov [x2], eax call io_get_dec mov [y2], eax call io_get_dec mov [x3], eax call io_get_dec mov [y3], eax mov eax, [y2] sub eax, [y3] imul dword[x1] mov ecx, eax mov eax, [y3] sub eax, [y1] imul dword[x2] add ecx, eax mov eax, [y1] sub eax, [y2] imul dword[x3] add ecx, eax mov eax, ecx cdq xor eax, edx sub eax, edx mov eax, ecx cdq mov ebx, 2 idiv ebx call io_print_dec mov eax, dot call io_print_string mov eax, edx mul 5 call io_print_dec xor eax, eax ret
1) Этот код вычисляет удвоенную площадь треугольника по координатам трёх вершин, используя формулу площади через векторное произведение, и выводит результат в формате "целая_часть.дробная_часть", где дробная часть умножается на 5.

2) Обрати внимание, что для получения абсолютного значения используется трюк с `cdq`, `xor` и `sub`.  
   Учти, что при выводе дробной части остаток от деления умножается на 5, чтобы показать одну десятичную цифру после точки.