0

我在汇编中编写了一个简单的程序,并尝试使用 TASM(Turbo) 和 TLINK 运行它。运行可执行文件后,出现此错误:

有错误的截图

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 解决了该错误。谁能解释到底发生了什么?

4

1 回答 1

2

很可能没有为应用程序的堆栈保留内存,或者内存太少,int 21h或者硬件中断处理程序导致堆栈溢出和数据/代码损坏,从而导致数据或损坏的代码执行。

mov bl, 2Ah无论如何,本身不可能造成问题。

于 2012-01-02T03:04:44.193 回答