2012-01-02 100 views
0

我在程序集中編寫了一個簡單的程序,我嘗試使用TASM(Turbo)和TLINK運行它。我運行可執行文件後,我得到這個錯誤:在程序集中運行簡單程序時出錯

Screenshot with error

TITLE 1st Program 
.286 
.model small 

.data 
val1 db 0 

.code 
main PROC 
    mov bl, 2Bh 
    mov val1, bl 

    mov bl, 2Ah ;I suspect this is the line that causes the problem 

    mov ah, 02 ;calls interrupt to display val1 
    mov dl, val1 
    int 21h 

    mov ah, 04Ch ;calls interrupt to terminat program 
    mov al, 00 
    int 21h 
main ENDP 
end main 

如果我刪除,只是移動2AH到BL線,它完美的罰款。我嘗試更改要添加到BL的值,但仍然收到錯誤消息。我只是想了解導致錯誤的原因。

謝謝!

稍後編輯:我已經設法通過添加.stack 100h來解決錯誤。任何人都可以解釋究竟發生了什麼?

回答

2

很可能沒有爲應用程序的堆棧預留內存,或者存儲的內存太少,int 21h或硬件中斷處理程序導致堆棧溢出以及導致執行數據或損壞的代碼的數據/代碼損壞。

mov bl, 2Ah本身不可能導致問題無論如何。

+1

對於簡單的例程,我建議在使用它們之前將寄存器推入堆棧,並在例程結束時將它們彈出。這使您可以隨意使用任何寄存器。 – Karel 2012-01-02 13:27:39