2014-11-03 33 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