; School of Computer Engineering
; K.N. Toosi University of Technology

global fact, var1

segment .data

var1:   dd  22
                
segment .text
        
fact:
        enter 0,0

        mov eax, [ebp+8]
        cmp eax, 0
        jg recur

        mov eax, 1
        jmp endfact
        

recur:
        dec eax
        push eax
        call fact
        add esp, 4

        imul dword [ebp+8]
        
endfact:        
        leave
        ret