Предыдущий раздел ПРОГРАММИРОВАНИЕ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ Следующий раздел

3.4. Умножение двух чисел

Команда умножения называется "mul", а машинный код для умножения AX на ВХE3F7h. Так как умножение двух 16-битных чисел может дать 32-разрядный ответ, то машинная команда mul сохраняет результат в двух регистрах – DX и AX. Старшие 16 бит помещаются в регистре DX, а младшие – в AX. Эта комбинация регистров записывается как DX:AX.

В в е д и т е  с помощью Debug  команду умножения  E3F7h по адресу 0l00h и установите AX=7C4Bh и BX=100h. Вы увидите команду в листинге регистров как "mul bx", без всяких ссылок на регистр AX. При умножении слов процессор i8086 всегда умножает регистр, имя которого вы указываете в машинной команде, на регистр AX, и сохраняет ответ в паре регистров DX:AX.

Перед запуском команды умножения перемножим l00h и 7C4Bh вручную. Три цифры 100 имеют в шестнадцатeричной системе такой же эффект, как и в десятичной. Так что умножение на l00h просто добавит два нуля справа от шестнадцатеричного числа. Таким образом,  l00h * 7С4В = 7C4B00h. Этот результат слишком длинен для того, чтобы поместиться в одном слове, поэтому мы разбиваем его на два слова 007Ch и 4B00h.

И с п о л ь з у й т е  Debug для запуска машинной команды умножения. Вы увидите, что DX содержит слово 007Ch, а AX содержит слово 4B00h.

 


Предыдущий раздел В начало Следующий раздел