Микропроцессор 8088 значительно мощнее предшествовавших ему 8-битовых устройств. Одна из причин увеличения мощности - добавление команд умножения и деления к набору команд микропроцессора. В прежних микропроцессорах выполнение операций умножения и деления требовало вызова подпрограмм на языке ассемблера.
і AX і
і BX і
і CX і
і DX і
ЪДДДДДДДДї АДДДДДДДДЩ ЪДДДДДДДДВДДДДДДДДї
і AX і * ЪДДДДДДДДї ДДДДД> і DX і AX і
АДДДДДДДДЩ і SI і АДДДДДДДДБДДДДДДДДЩ
і DI і
і BP і
і SP і
АДДДДДДДДЩ
ЪДДДДДДДДї
і Память і
і(слова) і
АДДДДДДДДЩ
(a) Умножение слов
ЪДДДДДДДДДї
і AH і
і AL і
і BH і
і BL і
і CH і
і CL і
і DH і
і DL і
ЪДДДДДДДДї АДДДДДДДДДЩ ЪДДДДДДДДВДДДДДДДДї
і AL і * ЪДДДДДДДДДї ДДДДД> і AH і AL і
АДДДДДДДДЩ і Память і АДДДДДДДДБДДДДДДДДЩ
і(байты) і
АДДДДДДДДДЩ
(b) умножение байтов
Фиг. 4.13 Операции умножения
Целое умножение со знаком (IMUL) устанавливает флаги переноса и переполнения в соответствии с тем же критерием, т.е. эти флаги устанавливаются в случае, когда результат не может быть представлен только своей младшей половиной. Однако, поскольку число имеет знак, то задача не сводится только к сравнению старшей половины результата с нулем. Команда IMUL устанавливает флаги, если старшая половина результата не является распространением знака младшей. Это значит, что в случае положительного результата проверка будет такой же, как для команды MUL - установка флага происходит при ненулевой старшей половине результата (но самый старший бит равен нулю, указывая на положительность результата). В случае отрицательного результата IMUL устанавливает флаги, если старшая половина результата состоит не только из единиц (но старший бит равен 1, указывая на отрицательность результата). Например, перемножение байтов с отрицательным результатом устанавливает флаги когда результат меньше -128 - наименьшего числа, представимого в одном байте. Другой пример, перемножение слов с положительным результатом, устанавливает флаги, если результат превышает 32 767 - наибольшее представимое одним словом число.