最終的な計算まで機能する階乗計算プログラムを作成しました。で階乗値を計算しているとき_multiply_fact
、ベース ポインタはランダムな値を指すことになります。私は何を間違っていますか?
通話中
push n
call _factorial
add esp, 4
手順
_factorial:
push ebp ;save base pointer
mov ebp, esp ;set up new base pointer
mov ebx, 8[ebp]
cmp ebx, 1 ;while n > 0
jg _multiply_fact ;decrement n
mov eax, 1 ;if n == 0 ret 1
pop ebp
ret ;return to multipy_fact for calculation
_multiply_fact:
pop ebp
push ebp
mov ebp, esp
mov ebx, 8[ebp]
dec ebx ;decrements n-1 times
push ebx
call _factorial
inc ebx
mul ebx ;recursively multiplies eax * (n+1)
pop ebp
ret