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 に答える