Я помогал моему другу отлаживать свою программу, и мы сузили ее до проблемы, которая возникает даже здесь:
.MODEL small
.STACK 16
.CODE
start:
mov ax, 044c0h
mov bl, 85
idiv bl
exit:
mov ax, 4c00h
int 21h
end start
После сборки с tasm 4.1 и запуска его на DOSBox 0.74, он переходит в бесконечный цикл. Когда вы проверяете его с помощью отладочного турбонаддува, можно увидеть, что это происходит после инструкции idiv
, которая по какой-то причине изменяет регистры cs
и ip
, и после двух кажущихся случайными инструкций восстанавливает их, указывая на строку idiv
выполняя его снова до бесконечности.
Есть ли у кого-нибудь объяснения?