BITS 32
GLOBAL fact
SECTION .text
fact:
mov eax, [esp+4] ; n в eax
cmp eax, 1
je ret1 ; 1 ! = 1
push ecx ; save used ecx
dec eax ; eax = n-1
push eax
call fact ; в eax (n-1)!
pop ecx ; ecx = n
inc ecx
mul ecx ; eax *= ecx
pop ecx ; restore used ecx
ret1:
ret