首页 > 解决方案 > 当我将 esp 移入 ebp 时,我在程序集中遇到分段错误(核心转储),我该如何解决这个问题?

问题描述

所以我开始学习汇编,到目前为止只是基础知识。我一直在测试我能做什么,我正在测试的其中之一是堆栈,但每次我尝试将 esp 移动到 ebp 以保留堆栈的状态时,我都会在终端中收到一条消息,提示“分段错误(核心转储)”。

section .data
    msg: db "line 1 executed", 10
    msg_L: equ $-msg
    msg_M: db "line 2 executed", 10
    msg_ML: equ $-msg    
section .text
       global _start:
thing:
   mov eax, 4
   mov ebx, 1
   mov ecx, msg_M
   mov edx, msg_ML
   int 80h

   mov ebp, esp
   mov esp, ebp

   ret
_start:
   mov eax, 4
   mov ebx, 1
   mov ecx, msg
   mov edx, msg_L
   int 80h
   call thing
   jmp end
end:
   mov eax, 1
   mov ebx, 0
   int 80h

正如你在这里看到的,我只是在测试如果我将 esp 移到 ebp 会发生什么。无论如何,如果有人能告诉我这个问题,那将是一个很大的帮助。

PS这是我运行它时所说的:

line 1 executed
line 2 executed
.shstrtab.textSegmentation fault (core dumped)

标签: linuxassemblyx86

解决方案


推荐阅读