Ошибка при запуске простой программы в сборке - PullRequest
0 голосов
/ 02 января 2012

Я написал простую программу на ассемблере и попытался запустить ее, используя 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.Кто-нибудь может объяснить, что именно произошло?

1 Ответ

2 голосов
/ 02 января 2012

Скорее всего, не было зарезервированной памяти для стека приложения или ее было слишком мало, и либо int 21h, либо аппаратный обработчик прерываний вызвал переполнение стека и повреждение данных / кода, которое привело к выполнению данных или поврежденному коду.

mov bl, 2Ah само по себе не могло вызвать проблему.

...