来自于《Intel汇编语言程序设计》(第四版)第八章的代码,但是我总是感觉有错误,红色代码部分从逻辑上看永远不会被执行到,以下为源代码:
【注:因为使用的是32位寄存器,因此可以容纳的最大阶乘是12!(479001600)】
TITLE Calculating a Factorial ( Fact.asm )
INCLUDE Irvine32.inc
.code
main PROC
push 12 ; calc 12!
call Factorial ; calculate factorial (eax)
ReturnMain:
call WriteDec ; display it
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] ; get n
cmp eax,0 ; n>0?
ja L1 ; yes:continue
mov eax,1 ; no:return 1
jmp L2
L1: dec eax
push eax ; Factorial(n-1)
call Factorial
; Instructions from this point on execute when each
; recursive call returns.
ReturnFact:
mov ebx,[ebp+8] ; get n
mul ebx ; edx:eax = eax * ebx
L2: pop ebp ; return EAX
ret 4 ; clean up stack
Factorial ENDP
END main
为什么感觉有问题呢,红色代码什么时候才会被执行到呢?
分享到:
相关推荐
此外,文档还包括一个逐步指南,介绍如何在Java中实现递归阶乘的代码,包括详细的代码示例和实现细节。 文档还涵盖了高级主题,如如何优化代码以提高性能以及如何处理大的阶乘。该资源包括实用练习,让读者可以练习...
递归算法求阶乘.rar 递归算法求阶乘.rar 递归算法求阶乘.rar 递归算法求阶乘.rar 递归算法求阶乘.rar 递归算法求阶乘.rar
利用递归算法求阶乘(VB6.0源代码)利用递归算法求阶乘。VB6.0源代码
利用递归算法求阶乘(VB6.0代码编写) 利用递归算法求阶乘。 QQ223857666勾月
有关汇编的递归程序,比较详细和正确,可以看看低级语言是如何实现的功能
c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘...
递归算法是一种直接或间接调用自身算法的过程,在计算机编程中,递归算法对解决一大类问题是十分,它往往使算法的描述简洁而且易于理解。 递归算法解决问题的特点: (1)递归就是在过程或函数里调用自身 (2)在...
通过本次实验,进一步加深对递归下降算法与抽象语法树的理解,学习程序设计语言的语法分析器的手工编程方法。 二、实验任务: 仔细阅读并测试TINY语言的语法分析器的相关程序,同时复习递归下降算法与抽象语法树的...
快速选择非递归与递归算法实现
易语言递归算法求阶乘源码,递归算法求阶乘,fac
利用递归算法求阶乘(VB6.0源代码) 利用递归算法求阶乘。VB6.0源代码
打印1到10的阶乘 学习递归的好实例
java中使用递归方法计算阶乘的代码示例
.Net 初学者的树控件和递归算法求阶乘 .Net 初学者的树控件和递归算法求阶乘
java代码-使用java解决递归阶乘的源代码
基础算法,数据结构,阶乘思想,采用c语言实现,对于数据结构基础的学习有帮助
阶乘(用递归实现)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
c语言递归求阶乘源码 递归求阶乘的方法 这里分享给大家 有需要的你 就不用浪费时间去找了啊
C语言实现递归算法
使用递归算法往往能设计出效率较高的程序。 递归调用最简单例子是计算阶乘。求N!本身是一个子程序,由于N!是N和(N-1)!的乘积,所以为求(N-1)!必须递归调用求N!的子程序,只是每次调用所使用的参数不同...