Меню сайта

Урок 58. Умножение

Микропроцессор 8088 значительно мощнеепредшествовавших ему
— — — 8=битовых устройств. — Одна из причин увеличения мощности —
— — — добавление команд умножения и деления кнабору команд
— — — микропроцессора. — В прежних микропроцессорах выполнение операций
— — — умножения и деления требовало вызоваподпрограмм на языке
— — — ассемблера.

— — — — — Существует две команды умножения.Покоманде MUL умножаются два
— — — целых числа без знака и дает результат беззнака. По команде IMUL
— — — умножаются целые числа со знаком. Приумножении целых чисел в
— — — качестве операндов используются числа,представленные в
— — — дополнительном коде и получаетсярезультат, имеющий правильный знак
— — — и значение.

— — — — — Обе команды умножения работают как сбайтами, так и со словами.
— — — Однако диапазон форм представленияоперандов гораздо уже, чем для
— — — команд сложения и вычитания. Фиг. 4.13иллюстрирует варианты
— — — команды умножения. Чтобы умножить 8 бит на8 бит, один из операндов
— — — должен быть в регистре AL, а результатвсегда оказывается в
— — — регистре AX. Результат может иметь длинувплоть до 16 бит
— — — (максимальное получаемое значение равно255 * 255 = 65025). Чтобы
— — — умножить 16 бит на 16 бит, один изоперандов нужно поместить в
— — — регистр AX. Результат, который может бытьдлиной до 32 бит
— — — (максимальное значение 65535 * 65535 &lt-2+32) помещается в пару
— — — регистров- в регистре DX содержатсястаршие 16 бит результата, а
— — — врегистре AX — младшие 16 бит. Умножениене допускает
— — — непосредственного операнда.

— — — — — Установка флагов командой умножениянесколько отличается от
— — — других арифметических команд. Единственныеимеющие смысл два флага
— — — — это флаги переноса и переполнения, и онипо=разному
— — — устанавливаются двумя командами.

— — — — — Команда умножения без знака MULустанавливает оба флага, если
— — — старшая половина резул в регистре ALполучится 2AH- команда AAM
— — — преобразует этот результат, оставляя врегистре AH число 04H, и
— — — 02H в регистре AL — или распакованноедесятичное число 42 в паре
— — — регистров AH:AL.

— — — — — — — — — — — — — -ЪДДДДДДДДї
— — — — — — — — — — — — — -і AX — — і
— — — — — — — — — — — — — -і BX — — і
— — — — — — — — — — — — — -і CX — — і
— — — — — — — — — — — — — -і DX — — і
— — — — — ЪДДДДДДДДї — — — АДДДДДДДДЩ — — — — — — — — — — — ЪДДДДДДДДВДДДДДДДДї
— — — — — і — -AX — — і * — ЪДДДДДДДДї — — — — — ДДДДД&gt- — — — — — і — -DX — — — — — і — — AX — -і
— — — — — АДДДДДДДДЩ — — — і — — SI — — і — — — — — — — — — — — АДДДДДДДДБДДДДДДДДЩ
— — — — — — — — — — — — — -і DI — — і
— — — — — — — — — — — — — -і BP — — і
— — — — — — — — — — — — — -і SP — — і
— — — — — — — — — — — — — -АДДДДДДДДЩ
— — — — — — — — — — — — — -ЪДДДДДДДДї
— — — — — — — — — — — — — -і Память і
— — — — — — — — — — — — — -і(слова) і
— — — — — — — — — — — — — -АДДДДДДДДЩ
— — — — — — — — — — — — — — — — — -(a) Умножение слов

— — — — — — — — — — — — — -ЪДДДДДДДДДї
— — — — — — — — — — — — — -і AH — — -і
— — — — — — — — — — — — — -і AL — — — і
— — — — — — — — — — — — — -і BH — — — і
— — — — — — — — — — — — — -і BL — — — і
— — — — — — — — — — — — — -і CH — — — і
— — — — — — — — — — — — — -і CL — — — і
— — — — — — — — — — — — — -і DH — — — і
— — — — — — — — — — — — — -і DL — — — і
— — — — — ЪДДДДДДДДї — — — АДДДДДДДДДЩ — — — -ЪДДДДДДДДВДДДДДДДДї
— — — — — і — -AL — — і * — ЪДДДДДДДДДї -ДДДДД&gt- — і — — AH — -і — — AL — — і
— — — — — АДДДДДДДДЩ — — — і Память — і — — — -АДДДДДДДДБДДДДДДДДЩ
— — — — — — — — — — — — — -і(байты) — і
— — — — — — — — — — —
— — -АДДДДДДДДДЩ
— — — — — — — — — — — — — — — — — — (b) умножение байтов

— — — — — — — — — — — Фиг. 4.13 Операции умножения
— — — — — Целое умножение со знаком (IMUL)устанавливает флаги переноса и
— — — переполнения в соответствии с тем жекритерием, т.е. эти флаги
— — — устанавливаются в случае, когда результатне может быть представлен
— — — тоько своей младшей половиной. Однако,поскольку число имеет знак,
— — — то задача не сводится только к сравнениюстаршей половины
— — — результата с нулем. Команда IMULустанавливает флаги, если старшая
— — — половина результата не являетсяраспространением знака младшей. Это
— — — значит, что в случае положительногорезультата проверка будет такой
— — — же, как для команды MUL — установка флагапроисходит при ненулевой
— — — старшей половине результата (но самыйстарший бит равен нулю,
— — — указывая на положительность результата). Вслучае отрицательного
— — — результата IMUL устанавливает флаги, еслистаршая половина
— — — результата состоит не только из едениц (ностарший бит равен 1,
— — — указывая на отрицательность результата).Например, перемножение
— — — байтов с отрицательным результатомустанавливает флаги когда
— — — результат менше -128 — наименьшего числа,представимого в одном
— — — байте. Другой пример, перемножение слов сположительным
— — — результатом, устанавливает флаги, еслирезультат превышает 32 767 —
— — — наиболшее представимое одним словом число.

Категория: Программирование на Ассемблере | Дата: 08.02.13

Меню раздела
Блок