-----------------------------------------------------------------|Код Команда Число Парал- Описание ||операции тактовых лельное || циклов выпол- || нение ||D9 F8 FPREM 84(70-138) 2(2-8) Замена 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. Знак остатка тот же, что и знакисходного делимого в ST. Величина остатка меньше величины модуля. Изменяемые флаги модуля операций с плавающей точкойC0, C1, C2, C3, как описано в таблице 15-1. Исключения числовых операцийU, D, I, IS Исключения защищенного режима#NM при установленном EM или TS в CR0. Исключения режима реальных адресовПрерывание 7 при установленном EM или TS в CR0. Исключения виртуального режима 8086#NM при установленном EM или TS в CR0. ПримечанияFPREM производит точный результат; исключение потери точности негенерируется, и управление округлением не действует.Команда FPREM не есть операция получения остатка, определяемая стандартомIEEE 754. Для получения последнего следует использовать команду FPREM1.FPREM поддерживается для совместимости с математическими сопроцессорами8087 и 80287.FPREM работает методом итеративных вычитаний и может уменьшить экспонентуST не более чем на 63 за одно выполнение. Если FPREM успешно дала остаток,меньший модуля, то работа завершена, и флаг C2 очищен. В противном случаеC2 устанавливается, и результат в ST называется частичным остатком.Экспонент от частичного остатка меньше экспонента исходного делимого какминимум на 32. Программное обеспечение может циклически выполнять этукоманду (используя как делимое частичный остаток в ST) до тех пор, покафлаг C2 не будет очищен командой. Подпрограммы прерывания с более высокимприоритетом, которым потребовался FPU, могут выполнить переключениеконтекста между командами цикла получения остатка.Важное использование FPREM состоит в приведении аргументов периодическихфункций. После завершения этой операции FPREM задает три младших битачастного во флагах C3, C1 и C0. Это важно для приведениия величиныаргумента для функции тангенса (при использовании модуля Пи/4), посколькупозволяет найти исходное значение угла в одном из восьми секторовединичной окружности.