-----------------------------------------------------------------|Код Команда Число Парал- Описание ||операции тактовых лельное || циклов выпол- || нение ||D9 F5 FPREM1 94.5(72-167) 5.5(2-18) Замена ST остатком от || деления ST на ST(1) |----------------------------------------------------------------- Работа команды EXPDIF <- экспонент(ST) - экспонент(ST(1));IF EXPDIF < 64THEN Q <- целое, полученное дроблением ST / ST(1) в направлениинуля; ST <- ST - (ST(1) x Q); C2 <- 0; C0,C1,C3 <- три младших бита Q; (* Q2, Q1, Q0 *)ELSE C2 <- 1; N <- число между 32 и 63; QQ <- целое, ближайшее к (ST/ST(1))/2**EXPDIF-N внаправлении нуля; ST <- ST - (ST(1) x QQ x 2**EXPDIF-N);FI; ОписаниеКоманда частичного остатка вычисляет остаток, полученный от деления ST наST(1), и помещает результат в ST. Величина остатка меньше половинывеличины модуля. Изменяемые флаги модуля операций с плавающей точкойC0, C1, C2, C3, как описано в Таблице 15-1. Исключения числовых операцийU, D, I, IS Исключения защищенного режима#NM при установленном EM или TS в CR0. Исключения режима реальных адресовПрерывание 7 при установленном EM или TS в CR0. Исключения виртуального режима 8086#NM при установленном EM или TS в CR0. ПримечанияFPREM1 производит точный результат; исключение потери точности негенерируется, и управление округлением не действует.Команда FPREM1 есть операция получения остатка, определяемая стандартомIEEE 754. Она отличается от FPREM способом округления частного от деленияST и ST(1). FPREM1 работает методом итеративных вычитаний и может уменьшить экспонентуST не более чем на 63 за одно выполнение. Если FPREM1 успешно далаостаток, меньший половины модуля, то работа завершена, и флаг C2 очищен. Впротивном случае C2 устанавливается, и результат в ST называется частичнымостатком. Экспонент от частичного остатка меньше экспонента исходногоделимого как минимум на 32. Программное обеспечение может циклическивыполнять эту команду (используя как делимое частичный остаток в ST) дотех пор, пока флаг C2 не будет очищен командой. Подпрограммы прерывания сболее высоким приоритетом, которым потребовался FPU, могут выполнитьпереключение контекста между командами цикла получения остатка.Важное использование FPREM1 состоит в приведении аргументов периодическихфункций. После завершении этой операции FPREM1 задает три младших битачастного во флагах C3, C1 и C0. Это важно для приведениия величиныаргумента для функции тангенса (при использовании модуля Пи/4), посколькупозволяет найти исходное значение угла в одном из восьми секторовединичной окружности.