Online Compiler Nasm

%include "io.inc" section .text global main main: GET_DEC 4, eax push eax call fact PRINT_DEC 4, eax add esp, 4 xor eax, eax ret fact: push ebp mov ebp, esp push ebx ; сохраняем ebx cmp dword[ebp+8], 1 ; разыменовываем ebp+8 JLE .ret1 ; JLE - jump if less equal (<=) mov ebx, [ebp+8] mov eax, ebx dec eax push eax call fact imul eax, ebx add esp, 4 JMP .end .ret1: mov eax, 1 .end: pop ebx pop ebp ret
1) Этот код вычисляет факториал числа, введённого с клавиатуры, с помощью рекурсивной функции `fact`.

2) Обрати внимание, что регистр `ebx` сохраняется в стеке, чтобы его значение не потерялось при рекурсивных вызовах.  
   Убедись, что понимаешь, как аргумент функции передаётся через стек и как обращаться к нему через `[ebp+8]`.