Міністерство освіти і науки України
Національний університет “Львівська політехніка”
/
Лабораторна робота № 4
Тема:
ОБЧИСЛЕННЯ ЕЛЕМЕНТАРНИХ ФУНКЦІЙ НА МАТЕМАТИЧНОМУ СПІВПРОЦЕСОРІ
Мета: Познайомитися з принципами роботи математичного співпроцесора та оволодіти навиками використання вбудованих елементарних математичних функцій та реалізації розгалужень.
ТЕОРЕТИЧНІ ВІДОМОСТІ
Команди порівняння чисел
У центральному процесорі команди умовних переходів виконуються відповідно до значень окремих бітів регістра прапорців процесора. У арифметичному співпроцесорі існують спеціальні команди порівнянь, за наслідками виконання яких, встановлюються біти кодів умов в регістрі стану:
FCOM – порівняння;
FICOM – порівняння цілих чисел;
FCOMP - порівняння дійсних чисел і вилучення зі стеку;
FICOMP - порівняння цілих чисел і вилучення зі стеку;
FCOMPP - порівняння і подвійне вилучення зі стеку (ST(0), ST(1)); FTST - порівняння операнда з нулем;
FXAM - аналіз операнда на тип числа (скінчене число, денормалізоване число, нуль, некінечність, ...).
Команда FCOM віднімає вміст операнда, розміщеного в оперативній пам’яті, від значення у вершині стеку ST(0). Результат віднімання нікуди не записується і покажчик вершини стеку ST не змінюється.
Позначимо операнд команди порівняння як “x”. Нижче, приведемо значення бітів кодів умови після виконання команди “FCOMx”:
C3 = 0, C0 = 0 ST(0)> x
C3 = 0, C0 = 1 ST(0)< x
C3 = 1, C0 = 0 ST(0)= x
C3 = 1, C0 = 1 ST(0) і x непорівнювані
Остання комбінація виникає при спробі порівняння не чисел, невизначеностей або нескінченості, а також в деяких інших випадках.
Операндами команди FICOM є 16- або 32-розрядні цілі числа, а в решті - аналогічна команді FCOM.Команди FCOMP і FICOMP аналогічні, відповідно, командам FCOM і FICOM, за винятком того, що після виконання операнд вилучається зі стеку.
Команда FCOMPP виконує ті ж дії, що і FCOM, але вона після виконання вилучає зі стеку обидва операнди, що брали участь в порівнянні.
Команда FTST призначена для порівняння операнду з нулем. Після її виконання коди умов встановлюються згідно з наведеним нижче:
C3 = 0, C0 = 0 ST(0)> 0
C3 = 0, C0 = 1 ST(0)< 0
C3 = 1, C0 = 0 ST(0)= 0
C3 = 1, C0 = 1 ST(0) і 0 непорівнювані
Команда FXAM аналізує вміст ST(0). Після її виконання встановлюються коди умов, згідно яких можна визначити знак числа, його скінченність або нескінченність, нормалізованість і т.д. Біт C1 містить знак числа, що аналізується: 0 -додатний, 1 – від’ємний. За допомогою біта C0 можна визначити, є число скінченим або нескінченим: 0 - скінчене число, 1 - нескінчене. Для скінчених чисел подальша класифікація може проводитися за вмістом кодів умов C2 і C3:
C3 = 0, C0 = 0 Ненормалізоване число
C3 = 0, C0 = 1 Нормалізоване число
C3 = 1, C0 = 0 Нульове число
C3 = 1, C0 = 1 Число денормалізоване
Аналогічно, для нескінчених чисел коди умов C2 і C3 мають наступні значення:
C3 = 0, C0 = 0 Нечисло
C3 = 0, C0 = 1 Нескінчене число
C3 = 1, C0 = 0 Порожнє число
C3 = 1, C0 = 1 Порожнє число
Для реалізації порівняння чисел необхідно за допомогою команди “FSTSW AX” переписати вміст регістра стану співпроцесора в регістр AX центрального процесора. Далі вміст регістра AH переписати в регістр прапорів центрального процесора за допомогою команди SAHF. Біти кодів умов співпроцесора відображаються (проектуються) на регістр прапорів центрального процесора так, що без додаткових дій, можна використовувати команди умовних переходів, але тільки беззнакового типу.
Наприклад, в наступному фрагменті програми виконується перехід до мітки compute, якщо операнди рівні:
.586
...
fcoм
0 <= ST(0) <= pi/4.
fstsw ах
sahf
je compute
...
Трансцендентні команди
Трансцендентні команди призначені для обчислення наступних функцій:
тригонометричні (sin, cos, tg...)
зворотні тригонометричні (arcsin, arccos...)
показникові (xy , 2x , 10x , ex )
гіперболічні (sh, ch, th...)
зворотні гіперболічні (arsh, arch, arcth...)
Ось список всіх трансцендентн...