.data x dword 12 result dword ? .code main proc push offset result push x call factorial nextstep: ; ... exit main endp factorial proc push ebp mov ebp, esp mov eax, 1 mov ecx, a ; value of parameter x again: mul ecx loop again mov edi, b ; address of result mov c , eax ; save the factorial in result pop ebp ret d ; deconstruct stack frame factorial endp end main