Online Compiler Nasm

section .bss px resd 3 py resd 3 section .text extern io_get_dec, io_print_dec, io_newline global main main: mov ebp, esp push ebx push esi push edi xor esi, esi .read: call io_get_dec mov [px + esi*4], eax call io_get_dec mov [py + esi*4], eax inc esi cmp esi, 3 jl .read mov eax, [py + 1*4] sub eax, [py + 2*4] imul eax, [px + 0*4] mov edi, eax mov eax, [py + 2*4] sub eax, [py + 0*4] imul eax, [px + 1*4] add edi, eax mov eax, [py + 0*4] sub eax, [py + 1*4] imul eax, [px + 2*4] add edi, eax mov eax, edi cdq xor eax, edx sub eax, edx mov edi, eax xor esi, esi mov eax, [px + 0*4] sub eax, [px + 1*4] cdq xor eax, edx sub eax, edx mov ebx, eax mov eax, [py + 0*4] sub eax, [py + 1*4] cdq xor eax, edx sub eax, edx call euclid add esi, eax mov eax, [px + 1*4] sub eax, [px + 2*4] cdq xor eax, edx sub eax, edx mov ebx, eax mov eax, [py + 1*4] sub eax, [py + 2*4] cdq xor eax, edx sub eax, edx call euclid add esi, eax mov eax, [px + 2*4] sub eax, [px + 0*4] cdq xor eax, edx sub eax, edx mov ebx, eax mov eax, [py + 2*4] sub eax, [py + 0*4] cdq xor eax, edx sub eax, edx call euclid add esi, eax mov eax, edi sub eax, esi add eax, 2 sar eax, 1 call io_print_dec call io_newline pop edi pop esi pop ebx xor eax, eax ret euclid: push ebx push edx .step: test ebx, ebx jz .finish xor edx, edx div ebx mov eax, ebx mov ebx, edx jmp .step .finish: pop edx pop ebx ret
1) Этот код вычисляет количество целочисленных точек внутри треугольника, заданного тремя вершинами с целочисленными координатами, используя формулу Пика.

2) Обрати внимание, что функция `euclid` реализует алгоритм Евклида для нахождения НОД, но в начале функции регистры `eax` и `ebx` уже должны содержать числа для вычисления.  
   Также учти, что результат формулы Пика получается в конце после арифметических операций `sub`, `add` и `sar`.