format ELF64 extrn printf extrn scanf extrn puts public main section '.text' executable main: push rbp mov rbp,rsp mov edi,prompt call puts sub rsp,16 mov rsi,rsp mov edi,scan xor eax,eax call scanf mov rax,[rsp] add rsp,16 mov rsi,rax lea rcx,[rax-1] top: mul rcx sub rcx,1 jnz top print: mov edi,msg mov rdx,rax xor eax,eax call printf leave ret section '.data' writable msg db "Factorial of %d is %d",0xA,0 scan db "%d",0 prompt db "Enter an unsigned integer.",0