有人可以告诉我为什么这是Segfaulting? (程序集x86 NASM)

时间:2013-12-02 18:01:16

标签: assembly parameters x86 segmentation-fault

有人可以向我解释为什么这是segfaulting?如果我删除mov [eax],ebx它不会发生段错误。但我需要将新值保存到[ebp+8]。我究竟做错了什么?如何将新的减去值保存到该地址?

     enter 0,0
                mov eax,[ebp+8]
                call print_nl
                call print_int
                cmp edx,99
                je DontUpdate
                jne Update
                        DontUpdate:
                                leave
                                ret

                Update:
                cmp edi, 5
                jz NoScore
                jnz Score


                        NoScore:


                                mov ebx,eax
   sub ebx,1
                                mov eax,[ebp+8]

                                mov [eax],ebx
                        ;       mov [score],eax
                                mov eax,printScore
                                call print_string
                                mov eax,ebx
                                call print_int
                                mov edi,0
                                pusha
                                popa
                                leave
                                ret

1 个答案:

答案 0 :(得分:0)

您正在从调用方传递无效指针(NULL或已损坏)。

mov eax,[ebp+8]

<强>更新

从您的评论中我假设您传递的是值而不是指针。除非您在调用函数和变量声明的位置发布代码,否则无法从您提供的信息中确定。