我正在学习AT&T x86汇编语言.我正在尝试编写一个取整数n的汇编程序,然后返回结果(n/2 + n/3 + n/4).这是我做的:
.text
.global _start
_start:
pushl $24
call profit
movl %eax, %ebx
movl $1, %eax
int $0x80
profit:
popl %ebx
popl %eax
mov $0, %esi
movl $4, %ebp
div %ebp
addl %eax, %esi
movl %ecx, %eax
movl $3, %ebp
div %ebp
addl %eax, %esi
movl %ecx, %eax
movl $2, %ebp
div %ebp
addl %eax, %esi
movl %esi, %eax
cmpl %ecx, %esi
jg end
pushl %ebx
ret
end:
mov %ecx, %eax
ret
Run Code Online (Sandbox Code Playgroud)
问题是我得到了分段错误.问题出在哪儿?