;递归求和
INCLUDE Irvine32.inc
.code
main PROC
mov ecx,5
mov eax,0
call CalcSum
L1: call WriteDec
call Crlf
exit
main ENDP
;------------------------------------------------------
CalcSum PROC
;Calculates the sum of a list of integers
;Receives: ecx=count
;Returns: eax=sum
;------------------------------------------------------
cmp ecx,0
jz L2
add eax,ecx
dec ecx
call CalcSum
L2:
ret
CalcSum ENDP
end Main
;计算阶乘
;
;int function factorial(int n)
;{;
; if(n==0)
; return 1;
; else
; return n*factorial(n-1);
;}
;
;
TITLE CALCULATING A FACTORIAL
Include Irvine32.inc
.code
main PROC
push 12
call Factorial
ReturnMain:
call WriteDec
call Crlf
exit
main ENDP
;---------------------------------------------------------
Factorial PROC
;Calculates a factorial
;Receives:[ebp+8]=n,the number to calculate
;Returns:eax=the factorial of n
;---------------------------------------------------------
push ebp
mov ebp,esp
mov eax,[ebp+8]
cmp eax,0
ja L1
mov eax,1
jmp L2
L1:
dec eax
push eax
call Factorial
ReturnFact:
mov ebx,[ebp+8]
mul ebx
L2:
pop ebp
ret 4
Factorial ENDP
END main
Factorial ENDP