.section .rodata STR1: .string "the answer is %d\n" .text .global main .type main,@function main: push $1 push $3 push %ebp mov %esp,%ebp sub $4, %esp mov $0, %eax mov %eax, -4(%ebp) loop1: mov 8(%ebp), %eax mov 4(%ebp), %ebx cmp %ebx, %eax jg exit1 push $1 push $4 push %ebp mov %esp,%ebp sub $4, %esp mov $0, %eax mov %eax, -4(%ebp) loop2: mov 8(%ebp), %eax mov 4(%ebp), %ebx cmp %ebx, %eax jg exit2 push $2 mov %ebp,%edx mov 0(%edx), %edx mov 8(%edx), %eax push %eax pop %eax pop %ebx imul %eax,%ebx push %ebx pop %eax add %eax, -4(%ebp) add $1, 8(%ebp) jmp loop2 exit2: mov -4(%ebp), %eax mov %ebp, %esp pop %ebp add $8, %esp push %eax pop %eax add %eax, -4(%ebp) add $1, 8(%ebp) jmp loop1 exit1: mov -4(%ebp), %eax mov %ebp, %esp pop %ebp add $8, %esp push %eax push $STR1 call printf add $8, %esp push $0 call exit .size main, .-main