
История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...
Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
Топ:
Теоретическая значимость работы: Описание теоретической значимости (ценности) результатов исследования должно присутствовать во введении...
Комплексной системы оценки состояния охраны труда на производственном объекте (КСОТ-П): Цели и задачи Комплексной системы оценки состояния охраны труда и определению факторов рисков по охране труда...
Особенности труда и отдыха в условиях низких температур: К работам при низких температурах на открытом воздухе и в не отапливаемых помещениях допускаются лица не моложе 18 лет, прошедшие...
Интересное:
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Берегоукрепление оползневых склонов: На прибрежных склонах основной причиной развития оползневых процессов является подмыв водами рек естественных склонов...
Влияние предпринимательской среды на эффективное функционирование предприятия: Предпринимательская среда – это совокупность внешних и внутренних факторов, оказывающих влияние на функционирование фирмы...
Дисциплины:
![]() |
![]() |
5.00
из
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
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 нет команды умножения упакованных десятичных чисел. Для выполнения этой операции сначала распакуйте эти числа, перемножьте их и воспользуйтесь командой ААМ, а затем упакуйте результат.
|
|
Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...
Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...
Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
© cyberpedia.su 2017-2025 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!