2014-11-22 84 views
0

這是我點擊「本地Windows調試器」時的屏幕外觀,然後單擊斷點按鈕。它去是點.....Visual Studio命中未知斷點

http://i.stack.imgur.com/yufiH.png

我的ASM文件說:

.model small 
.stack 
.data 
.code 
_Func proc 
    mov ax, 1 
    leave 
    ret 
_Func endp 
end 

而且cpp文件:

extern "C" { 
    int Func(); 
} 
int main(int argc, char** argv) { 
    Func(); 
    return 0; 
} 

所以我不知道,爲什麼這個代碼會碰到這個奇怪的斷點?這是不是在我的代碼...

是的,我知道什麼「int 3」在組裝意味着,這不是我想知道的。這不是我的代碼,但它不會讓我的代碼運行...

+2

「ENTER」指令與「LEAVE」匹配在哪裏? – SomeWittyUsername 2014-11-22 07:45:03

+0

你的asm是無稽之談,堆棧指針被破壞。所以RET會在任意地址恢復。這恰好是代碼段中的填充字節。填充字節是INT3指令,你可以猜出原因。 – 2014-11-22 10:25:18

回答

0

.model small適用於32位Windows(Win32)的16位MSDOS,而不是。請嘗試以下代碼:

.model flat 
.code 
_Func proc 
    mov eax, 1 
    ret 
_Func endp 
end