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

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

Александров Е.К., Грушвицкий Р.И., Купрянов М.С., Мартынов О.Е. Микропроцессорные системы — Спб.: Политехника, 2002. — 935 c.
ISBN 5-7325-0516-4
Скачать (прямая ссылка): mikroprocessorniesistemi2002.djvu
Предыдущая << 1 .. 66 67 68 69 70 71 < 72 > 73 74 75 76 77 78 .. 528 >> Следующая

представляются в формате РТ и имеют точность 19 десятичных цифр.
ПРОЦЕССОРЫ ОБЩЕГО НАЗНАЧЕНИЯ И СИСТЕМЫ НА ИХ ОСНОВЕ
Таблица 2.29
Виды и мнемокоды условий при выполнении команд FCMOVcc
Мнемокод (сс) Условие
В CF=1
NB CF=0
Е ZF=1
NE ZF=0
и PF=1
NU PF=0
BE CF+ZF=1
NBE CF+ZF=0
2.4.4. КОМАНДЫ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ
Команды этой группы обеспечивают выполнение арифметических операций
сложения, вычитания, умножения, деления и ряда других (табл. 2.30).
Один из операндов всегда размещается в верхнем регистре арифметического
стека ST(0), второй операнд выбирается из памяти или регистра стека
ST(i), номер которого задается байтом MODRM. Формат выбираемого из памяти
операнда ОТ, ДТ, ДВ, ЦС, КЦ определяется кодом операции. Результат
операции размещается в регистрах арифметического стека ST(0) или ST(i).
Таблица 2.30
Команды арифметических операций
Синтаксис команды Операция
FADD m(32,64)real ST(0),ST(i) ST(i),ST(0) m(32,64)+ST(0) -> ST(0)
ST(0)+ST(i) -> ST(0) ST(0)+ST(i) -> ST(i)
FADDP ST(i),ST(0) ST(0)+ST(1) -> ST(1), освобождение ST(0)
ST(0)+ST(i) -> ST(i), освобождение ST(0)
FIADD m(16,32)int m(16,32)+ST(0) ->ST(0)
FSUB m(32,64)real ST(0),ST(i) ST(i),ST(0) ST(0) - m(32,64) -> ST(0)
ST(0) -ST(i) -> ST(0) ST(i) - ST(0) -> ST(i)
FSUBP ST(i),ST(0) ST(1)-ST(0) -> ST(1), освобождение ST(0) ST(i)-
ST(0) -> ST(i), освобождение ST(0)
FISUB m(16,32)int ST(0) - m(16,32) -> ST(0)
FISUBP ST(1)-ST(0) -> ST(1), освобождение ST(0)
FMUL m(32,64)real ST(0),ST(i) ST(i),ST(0) ST(0) * m(32,64) -> ST(0)
ST(0)*ST(i) -> ST(0) ST(0)*ST(i) -> ST(i)
FMULP ST(i),ST(0) ST(0)*ST(1) -> ST(1), освобождение ST(0)
ST(0)*ST(i) -> ST(i), освобождение ST(0)
FIMUL m(16,32)int ST(0) * m(16,32) -> ST(0)
СИСТЕМА КОМАНД: ОПЕРАЦИИ НАД ЧИСЛАМИ С ПЛАВАЮЩЕЙ ТОЧКОЙ
Продолжение табл. 2.30
Синтаксис команды Операция
FDIV m(32,64)real ST(i),ST(0) ST(0) / m(32,64) -> ST(0) ST(0)/ST(i) -
> ST(0) ST(0)/ST(i) -> ST(i)
FDIVP ST(i),ST(0) ST(1)/ST(0) -> ST(1), освобождение ST(0)
ST(i)/ST(0) -> ST(i), освобождение ST(0)
FIDIV m(16,32)int ST(0)/m(16,32) -> ST(0)
FDIVR m(32,64)real ST(0),ST(i) ST(i),ST(0) m(32,64)/ST(0) -> ST(0)
ST(i)/ST(0) -> ST(0) ST(0)/ST(i) -> ST(i)
FDIVRP ST(i),ST(0) ST(0)/ST(1) -> ST(1), освобождение ST(0)
ST(0)/ST(i) -> ST(i), освобождение ST(0)
FIDIVR m(16,32)int m(16,32)/ST(0) -" ST(0)
FPREM FPREM1 ST(0)/ST(1), остаток -> ST(0) ST(0)/ST(1), остаток
(формат IEEE) -> ST(0)
FSQRT VST(0)
FABS I ST(0) I ->ST(0)
FCHS -ST(0) -> ST(0)
После выполнения операций FADDP, FSUBP, FMULP, FDIVP вершина стека
освобождается, т. е. для регистра ST(0) устанавливается значение tag =
11. Содержимое поля ТОР в регистре FPSR увеличивается на единицу, т. е.
производится сдвиг вершины стека на один регистр вниз. Соответственно,
значение номера i для регистра ST(i) уменьшается на единицу. Например,
если операнд выбирается из регистра ST(3), то после выполнения операции и
размещения результата в этот регистр его номер относительно новой вершины
стека принимает значение ST(2).
Команды обратных операций FSUBR, FSUBRP, FDIVR, FDIVRP обеспечивают
изменение порядка следования операндов при вычитании и делении.
При выполнении операций над вещественными числами операндами могут
служить ± О и ± L. В этих случаях формирование результатов арифметических
операций производится в соответствии с табл. 2.31, где используются
следующие обозначения:
Н, IE = 1 - устанавливается флаг недействительной операции IE = 1,
результатом является код неопределенности, если значение маски IM = 1;
(±) - знак результата S устанавливается с помощью операции "Исключающее
ИЛИ" над знаками операндов S1, S2, т. е. S = S1 (+) S2;
±0 при UE = 1 - результат +0 или -0 устанавливается при получении
антипереполнения (UE =1), если значение маски UM = 1;
*0 - знак устанавливается в зависимости от способа округления, заданного
полем RC: +0 при RC = 00,10,11; -0 при RC = 01.
При выполнении операций, вызывающих установку флагов IE = 1, UE = 1 или
ZE = 1, реализуется прерывание, если флаги не маскированы. Если же
соответствующие маски имеют значение IM = 1, UM = 1, или ZM = 1, то
процессор продолжает выполнение программы, а результатами операций служат
коды неопределенности (Н) при IE = 1, ±0 при UE-1, ±L при ZE = 1,
согласно табл. 2.31.
ПРОЦЕССОРЫ ОБЩЕГО НАЗНАЧЕНИЯ И СИСТЕМЫ НА ИХ ОСНОВЕ
Не-числа SNAN, QNAN также могут быть операндами при выполнении команд над
вещественными числами. В этом случае результат арифметической операции
определяется согласно табл. 2.32, где QNAN (SNAN) обозначает не-число
QNAN, полученное из SNAN путем установки единицы в старшем разряде
мантиссы. Остальные разряды мантиссы при преобразовании SNAN в QNAN
сохраняют свое значение.
Команда FPREM производит деление числа, расположенного в ST(0), на число
в ST(1), остаток накапливается в регистре ST(0). Деление осуществляется
путем последовательного вычитания, которое выполняется п раз-до тех пор,
пока не будет получено ST(0) < ST(1).
Предыдущая << 1 .. 66 67 68 69 70 71 < 72 > 73 74 75 76 77 78 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

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

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed