小编use*_*688的帖子

汇编语言中的分段错误

我正在学习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)

问题是我得到了分段错误.问题出在哪儿?

linux x86 assembly

5
推荐指数
1
解决办法
2万
查看次数

标签 统计

assembly ×1

linux ×1

x86 ×1