Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...

Краткие теоретические сведения.

2024-02-15 67
Краткие теоретические сведения. 0.00 из 5.00 0 оценок
Заказать работу

Вверх
Содержание
Поиск

1. Команды умножения

2. Команды деления

Команды умножения чисел без знака MUL и целого умножения чисел со знаком IMUL .

Если Вам когда-либо приходилось терпеть муки составления програм­мы умножения для микропроцессоров Z80, 6502 или для каких-либо других распространенных 8-битовых микропроцессоров, то Вы будете рады узнать, что микропроцессор 8x86 имеет встроенные команды умножения. Команда MUL (multiply – умножить) умножает числа без знака, a IMUL (integer multiply – умно­жить целые числа) – числа со знаком. Обе команды могут умножать как байты, так и слова.

Эти команды имеют формат:

MUL источник

IMUL источник

где источник - регистр общего назначения или ячейка памяти размером в байт или слово. В качестве второго операнда команды MUL и IMUL используют содер­жимое регистра AL (при операциях над байтами) или регистра АХ (при операциях над словами). Произведение имеет двойной размер и возвращается следующим образом:

Умножение байтов возвращает 16-битовое произведение в регистрах АН (старший байт) и AL (младший байт).

Умножение слов возвращает 32-битовое произведение в регистрах DX (старшее слово) и АХ (младшее слово).

По завершении исполнения этих команд флаги переноса CF и переполнения OF показывают, какая часть произведения существенна для последующих операций. После исполнения команды MUL флаги CF и OF равны 0, если старшая половина произведения равна 0; в противном случае оба этих флага равны 1. После исполне­ния команды IMUL флаги CF и OF равны 0, если старшая половина произведения представляет собой лишь расширение знака младшей половины. В противном случае они равны 1.

Приведем несколько примеров умножения:

 

MUL ВХ     ;Умножить ВХ на АХ без знака

MUL MEM_BYTE. ;Умножить содержимое ячейки памяти на    AL без знака

IMUL DL    ;Умножить DL на AL со знаком

IMUL MEM WORD ;Умножить содержимое ячейки памяти на   АХ со знакам

 

Команды MUL и IMUL не ^позволяют в качестве операнда использовать непос­редственное значение. Такое значение-перед умножением надо. загрузить в ре­гистр или в ячейку памяти. Например, в результате исполнения команд

MOV DX,10

MUL DX

содержимое регистра АХ будет умножено на 10.

 

Коррекция результатов умножения для представления в кодах ASCII (команда AAM )

Команда ААМ (ASCII adjust for multiplication - скорректировать умно­жение для представления в кодах ASCII) преобразует результат предшествующего умножения байтов в два правильных неупакованных десятичных операнда. Она считает, что произведение двойного размера находится в регистрах АН и AL, и возвращает неупакованные операнды в регистрах АН и AL. Чтобы команда ААМ работала правильно, исходные множимое и множитель должны быть правильны­ми неупакованными байтами.

Для выполнения преобразования команда ААМ делит значение регистра AL на 10 и запоминает частное и остаток в регистрах АН и AL соответственно. Кроме того, она модифицирует флаг четности. PF, флаг нуля ZF и флаг знака SF в зависи­мости от полученного значения регистра AL. Состояние флага переноса CF, вспомогательного флага AF и флага переполнения становятся неопределенными.

Рассмотрим действие команды 'ААМ на примере. Пусть регистр AL содержит 9 (0000 1001В), а регистр BL — 7 (0000 0111В). Команда

MUL BL

умножит значение регистра AL на значение регистра BL и возвратит 16-битовый результат в регистрах АН и AL. В нашем случае она возвратит 0 в регистре АН и 00111111В (десятичное 63) в регистре AL. Следующая за ней команда

AAM

поделит значение регистра AL на 10 и возвратит частное 0000 0110В в регистре АН, а остаток 0000 0011В в регистре AL. Тем самым мы получаем правильный резуль­тат: BCD-число 63 в неупакованном формате. У микропроцессора 8x86 нет команды умножения упакованных десятичных чисел. Для выполнения этой операции сначала распакуйте эти числа, перемножьте их и воспользуйтесь командой ААМ, а затем упакуйте результат.

 


Поделиться с друзьями:

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.007 с.