2010-10-17 121 views
0

给定一个数字,这个程序计算阶乘,但它没有长比9问题汇编代码,计算阶乘

.section .data 
.section .text 
.globl _start 

_start: 
pushl $10 
movl %eax, %ebx 

call func 
addl $4, %esp 
movl %eax, %ebx 

movl $1, %eax 
int $0x80 

.type func,@function 

func: 
    pushl %ebp 
    movl %esp, %ebp 
    movl 8(%ebp), %eax 
    cmpl $1, %eax 
    je fim_loop 
    decl %eax 
    pushl %eax 
    call func 
    movl 8(%ebp), %ebx 
    imull %ebx, %eax 

    fim_loop: 
     movl %ebp, %esp 
     popl %ebp 
     ret 

更大的作品数量编译后运行程序,回声$?应该返回结果,但这是返回0而不是正确的结果,有人知道这个代码有什么问题吗?

回答

2

似乎是一个程序的退出值大小限制,我觉得最高值是255,这样的libc

+0

你介意张贴最终的代码,我应该使用SYS_WRITE什么的? – jyz 2010-10-17 21:06:45