Научная литература
booksshare.net -> Добавить материал -> Физика -> Александров Е.К. -> "Микропроцессорные системы" -> 53

Микропроцессорные системы - Александров Е.К.

Александров Е.К., Грушвицкий Р.И., Купрянов М.С., Мартынов О.Е. Микропроцессорные системы — Спб.: Политехника, 2002. — 935 c.
ISBN 5-7325-0516-4
Скачать (прямая ссылка): mikroprocessorniesistemi2002.djvu
Предыдущая << 1 .. 47 48 49 50 51 52 < 53 > 54 55 56 57 58 59 .. 528 >> Следующая

EDX (старшие разряды).
При двух- и трехадресной формах команды IMUL операндами служат 16- или
32-разрядные числа. Один операнд выбирается из регистра, в качестве
второго операнда при двухадресной форме служит либо содержимое регистра
или адресуемой ячейки памяти, либо непосредственный операнд im. При
трехадресной форме содержимое регистра или ячейки памяти является вторым
сомножителем, а непосредственный операнд - третьим. Если в качестве
непосредственного операнда используется 8-разрядное число im8, то оно
преобразуется до заданной разрядности (16 или 32) путем расширения знака.
Произведение размещается в 16- или 32-разрядном регистре, указанном в
поле операнда. Так как при этом старшие 16-го или 32-го разряда
произведения теряются, то после умножения следует проверять значение
признака переполнения OF.
Таблица 2.17
Установка признаков при выполнении команд арифметических, логических
операций и сдвигов
Команды Признаки
OF SF ZF AF DF CF
ADD.ADC.SUB.SBB.CMP.NEG.XADD.CMPXCHG + + + + + +
INC, DEC + + + + + -
MUL, IMUL + н н Н Н +
DIV, IDIV н н н н Н н
DAA, DAS н + + + + +
AAA, AAS н н н + н +
AAM, AAD н + + н + н
CMPXCHG8B - - + - - -
AND, OR, XOR, TEST 0 + + н + 0
SAL, SAR, SHL, SHR (1 разряд) + + + н + +
SAL, SAR, SHL, SHR (n разрядов), SHLD, SHRD н + + н +
+
ROL, ROR, RCL, RCR (1 разряд) + - - - - +
ROL, ROR, RCL, RCR (n разрядов) н - - - - +
Примечание. + - установка признака по результату операции; -
- сохранение
ранее установленного признака; н - неопределенное значение признака; 0 -
установка нулевого значения признака.
СИСТЕМА КОМАНД: ОПЕРАЦИИ НАД ЦЕЛЫМИ ЧИСЛАМИ
При выполнении команд MUL, IMUL признаки OF, CF устанавливаются в
единицу, если разрядность результата превышает разрядность регистров,
используемых для его размещения. Команды MUL, IMUL различаются условиями
установки этих признаков. При выполнении беззнакового умножения командой
MUL устанавливаются значения OF = CF = 1, если старшая половина
произведения не равна нулю, OF = CF = 0, если все разряды старшей
половины равны нулю. При выполнении знакового умножения командой IMUL
устанавливаются значения OF = CF = 1, если старшая половина произведения
не является расширением знака младшей половины, OF = CF = 0, если во всех
разрядах старшей половины повторяются значения старшего бита (знака)
младшей половины.
Команды деления DIV и IDIV имеют только одноадресную форму, причем
разрядность делимого, которое размещается в аккумуляторе с расширением,
должна вдвое превышать разрядность делителя (8,16 или 32 разряда).
Реализуемое при этом размещение делимого, результата и остатка указано
втабл. 2.16. Знак остатка при выполнении команды IDIV устанавливается
равным знаку делимого. Дробное частное округляется до целого значения
отбрасыванием его дробной части. Если делитель равен нулю или разрядность
частного превышает разрядность аккумулятора (AL, АХ или ЕАХ), то
выполняется прерывание типа #DE (ошибка деления).
Команды CBW/CWDE и CWD/CDQ осуществляют преобразование хранящегося в
аккумуляторе байта (AL), слова (АХ) или двойного слова (ЕАХ)
соответственно в одинарное, двойное или четверное слово (16,32 или 64
разряда) путем расширения знакового разряда. При выполнении команд CBW,
CWDE расширенный операнд остается в аккумуляторе: AL в АХ или АХ в ЕАХ.
При выполнении команд CWD, CDQ расширение АХ, ЕАХ производится в регистры
DX или EDX, куда заносится старшая половина (расширенный знак)
результата. Команды CBW, CWD реализуются, когда процессор работает в
режимах реальных адресов или виртуального 8086 (обработка 16-разрядных
слов). Команды CWDE, CDQ выполняются в защищенном режиме (обработка 32-
разрядных слов). Эти операции обычно производятся перед выполнением
команды Ю1\/для образования из 8-, 16- или 32-разрядных операндов
делимого удвоенной разрядности.
Команды AAA, AAS, ААМ, AAD обеспечивают получение правильного результата
арифметических операций над неупакованными двоично-десятичными числами
(от 0 до 9), значение которых представляется одним байтом. Такое
представление чисел используется в коде ASCII (КОИ-7), который в младшей
тетраде содержит двоичный код соответствующего десятичного числа (0 - 9),
а в старшей тетраде - код 0011. Для получения правильного результата
перед обработкой таких чисел в старшей тетраде устанавливается код 0000.
Результат арифметических операций над двоично-десятичными числами
размещается в ре- гистре АХ. После сложения, вычитания, умножения
выполняются команды коррекции AAA, AAS, ААМ, после чего в младшей тетраде
регистра AL образуется двоичный код младшего десятичного разряда
результата, а в младшей тетраде регистра АН - двоичный код старшего
разряда результата. Например, после умножения чисел 9 и 7, которые в
неупакованной двоично-десятичной форме задаются кодами 0000 1001 и 0000
0111, в регистре AL будет содержаться произведение 001111111 = 63,
которое после коррекции с помощью команды ААМ будет представлено в
Предыдущая << 1 .. 47 48 49 50 51 52 < 53 > 54 55 56 57 58 59 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

Есть, чем поделиться? Отправьте
материал
нам
Авторские права © 2009 BooksShare.
Все права защищены.
Rambler's Top100

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed