Имея все это в виду, ваш код деления может быть скорректирован, чтобы принять 16-битный делитель:
огал своему другу отладить его программу, и мы сузили ее до проблемы, которая возникает даже здесь:
.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
линия, выполняя это снова до бесконечности.
У кого-нибудь есть объяснение этому?