используется всего три элемента стека,
0037 9B D9 FD FSCALE ; F*2**-1 = F/2 ; -1 ; I
003A 9B D9 F0 F2XM1 ; (2**F/2)-1 ; -1 ; I
003D 9B DE E1 FSUBRP ST(1),ST(0) ; 2**F/2 ; I ; ?
0040 9B D8 8E 0000 U FMUL ST(0) ; 2**F ; I ; ?
0045 9B D9 FD FSCALE ; (2**F)*(2**I) ; I ; ?
0048 9B D9 C9 FXCH ST(1) ; I ; 2**(I+F) ; ?
004B 9B D8 D9 FCOMP ; 2**(I+F) ; ? ; ?
004E C3 RET ; 10**X ; ? ; ?
004F TEN_TO_X ENDP
004F CODE ENDS
END
Фиг. 7.24 Вычисление 10**ST
соответствующего элемента стека неопределено. В подпрограмме
используется всего три элемента стека, так что в поле комментариев
есть три колонки.
Хотя теперь мы имеем нужную степень двух, у сопроцессора 8087
отсутствует команда, завершившая бы всю работу за один шаг.
Команда F2XM1 возводит 2 в степень X, но только если X меньше или
равен 1/2. Это означает, что степень E мы должны разделить на
целую и дробную части; затем команда FSCALE сможет возвести 2 в
целую степень, а команда F2XM1 обработает дробную часть.
Перед разделением E на две части программа выполняет некоторые
вспомогательные действия. Эти действия - команды сопроцессора
8087, которые читают управляющее слово и устанавливают режим
округления в направлении меньшего числа. Теперь, когда мы возьмем
целую часть показателя степени, его значение будет округляться
влево, в направлении минус бесконечности. Дробная часть показателя
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий