Пожалуйста, объясните мне, почему я получаю "Деление на ноль" ошибка для этого кода:Сборка ошибка деление
"мов ах, 300
мов бл, 2
IDIV бл"
Он должен быть следующим: al = ax div source, ah = ax mod source
Пожалуйста, объясните мне, почему я получаю "Деление на ноль" ошибка для этого кода:Сборка ошибка деление
"мов ах, 300
мов бл, 2
IDIV бл"
Он должен быть следующим: al = ax div source, ah = ax mod source
idiv
Подписано подразделение, которое производит коэффициент в al
, как вы сказали. Это 8-битный регистр и 300/2=150
, который не вписывается в 8 бит при использовании подписанной арифметики (так как максимум равен 127
). В некоторой степени вводящий в заблуждение, вы получаете divide by zero
для переполнения (это на самом деле называется #DE divide error
). Это, конечно, написано в справочной системе.
Вы можете использовать div bl
, если вы довольны неподписанным расчетом, в этом случае 150
вписывается в al
, и вы не получите ошибку.