Ассемблер и программирование для IBM PC


          

E80 E400 Произведение 2:


Произведение1: 0000 0E80 E400 Произведение 2: 138A 5800 Результат: 138A 6680 E400
Так как первая команда ADD может выработать перенос, то второе cложение выполняется командой сложения с переносом ADC (ADd with Carry). В силу обратного представления байтов в словах в процессоpах 8086/8088, область PRODUCT в действи тельности будет содержать значение 8A13 8066 00E4. Программа предполагает, что первое слово в области PRODUCT имеет начальное значение 0000.
------------------------------------------------------------ ------------------------------------------------------------ Рис.12.4. Многословное умножение.
Умножение "двойного слова на двойное слово". Умножение двух двойных слов включает следующие четыре операции умножения:
Множимое Множитель
слово 2 х слово 2 слово 2 х слово 1 слово 1 х слово 2 слово 1 х слово 1
Каждое произведение в регистрах DX и AX складывается с соответствующим словом в окончательном результате. Пример такого умножения приведен в процедуре F10XMUL на рис. 12.4.
Ассемблер для IBM PC. Глава 12 270
Множимое MULTCND содержит шест. 3206 2521, множитель MULTPLR - шест. 6400 0A26. Результат заносится в область PRODUCT, состоящую из четырех слов. Хотя логика умножения двойных слов аналогична умножению двойного слова на слово, имеется одна особенность, после пары команд сложения ADD/ADC используется еще одна команда ADC, которая прибавляет 0 к значению в поле PRODUCT. Это необходимо потому, что первая команда ADC сама может вызвыть перенос, который последующие команды могут стереть. Поэтому вторая команда ADC прибавит 0, если переноса нет, и прибавит 1, если перенос есть. Финальная пара команд ADD/ADC не тредует дополнительной команды ADC, так как область PRODUCT достаточно велика для генерации окончательного результата и переноса на последнем этапе не будет. Окончательный результат 138A 687C 8E5C CCE6 получится в поле PRODUCT в обратной записи байт в словах. Выполните трассировку этого примера с помощью отладчика DEBUG.
СДВИГ РЕГИСТРОВОЙ ПАРЫ DX:AX ------------------------------------------------------------

Содержание  Назад  Вперед