У меня проблема с корректным завершением работы 16-битной программы DOS, написанной на ассемблере.Вот часть кода:
.386P
.model flat
stack_s segment stack 'stack'
db 256 dup(0)
stack_s ends
data segment use16
data ends
code segment 'code' use16
assume cs:code, ds:data
main proc
mov ax, data
mov ds, ax
iretd
main endp
code ends
end main
Проблема в том, что программа не завершается корректно.DOSBox просто зависает.Я попытался понять, что происходит с помощью отладчика, и кажется, что программа просто заканчивается бесконечным циклом после выполнения iretd
.Почему это происходит?Как правильно завершить 16-битное приложение DOS?