2014-11-03 34 views
-2

我非常需要帮助,因为我创建了这个汇编程序 (eject/dev/sr0),当我运行程序。 cd打开但我有一个奇怪的消息:“分段错误(核心转储)” 为什么我收到此错误消息? 感谢的你非常快乐的一天=)lauching程序怪异的消息

[section .text] 

global _start 
_start: 
    mov al, 5 
    cdq 
    push edx 
    push dword 0x3072732f 
    push dword 0x7665642f 
    mov ebx, esp 
    mov cx, 0xfff 
    sub cx, 0x3e7 
    sub cx, 0x418 
    int 0x80 
    mov ebx, eax 
    mov al, 54 
    mov cx, 0x5309 
    cdq 
    int 0x80 
+0

你的程序集很奇怪。你有这样做的具体原因吗? – duskwuff 2014-11-03 20:53:47

+0

以尽可能最简单的方式编写代码,直到您找到可行的东西。 _然后_你可以开始考虑混淆代码(假设你出于某种原因实际上需要它)。 – Michael 2014-11-03 21:05:12

回答

1

我认为第一个系统调用是open和第二个是将托盘弹出的ioctl。之后你会怎么想?你忘了结束你的程序,所以CPU会继续执行内存中的任何内容,直到它遇到故障。您可能需要添加相当于mov eax, 1; int 0x80的东西。

最后,通常的建议:学会使用调试器。

+0

非常感谢!这是一个愚蠢的错误.. – newuser 2014-11-05 13:20:46