2014-05-06 80 views
0

我試圖找出爲什麼我收到此錯誤:未處理的異常在Project.exe 0X0000007B:0000005:訪問衝突

Unhandled exception at 0x0000007b in Project.exe: 0xC0000005: Access violation

首先我不能確定什麼該指令情況:MOV EAX, 100 因爲我已經將123存儲到EAX中。當我調試程序時,它通過程序ran運行參數後指出EAX = 100。我的問題是,MOV EAX,100取代123?

同樣在程序結束時,我得到了錯誤。是因爲他在程序中的mov聲明嗎?請解釋...

.code 
main PROC 
mov EAX, 123 ;Argument 
MOV EBX, 456 ;Argument 

call ran 

    exit 
main ENDP 

ran PROC 
    push eax ;save eax 
    push ebx ;save ebx 
    mov eax, 100 ;store 100 to eax? 

    pop ebx 
    ret 
    exit 
ran ENDP 

END main 

回答

2

兩個推,但只有一個流行。爲什麼會發生異常應該是顯而易見的。

push eax ;save eax 
push ebx ;save ebx 
mov eax, 100 ;store 100 to eax? 

pop ebx 
ret 

如果push財產以後在棧中,則必須確保由任一堆棧結餘手動調節,或者通過使用相同數量的pop你推前。在你的情況下,ret指令將跳到最初指向eax的地方。

0x7b == 123 == eax 
相關問題