|
4.7. Система команд арифметического сопроцессора 8087 |
499 |
|
|
|
|
|
|
FM UL |
ST, ST |
ST <- Y2, ST(1) = 1, ST(2) - 2 х |
Y |
|
|
FST |
ST(3) |
ST = Y2, S T (l) = 1, ST(2) = 2 х К, ST(3) |
Y2, Tag(3) <- 00 |
FADD |
ST, ST(1) |
ST <- 1 + Y2, ST(1) = 1, ST(2) = 2 xY , ST(3) = Y 2 |
|
FDJV |
ST(2), ST |
ST = 1 + Y \ ST(1) = 1, ST(2) |
sin л/3, ST(3) = Y 2 |
|
FXCH |
ST(3) |
ST <- y 2, S T (1 )= 1, ST(2) = sin ti/3, ST(3) <- 1 + Y 2 |
|
FSUBP |
|
ST( 1) <— 1 - Y2, Tag(Q) |
11, Top <- Top + 1, ST(0) = 1 - |
Y2, |
FDIV |
|
ST(1) = sin 71/3. STC2) = 1 + Y 2 |
|
|
ST, ST(2) |
ST <- cos я/3, ST(1) = sin 71/3, ST(2) = 1 + Yz |
|
FDIVRP |
|
ST <- ctg 71/3 = 0,57735026918962576, 7as(0) <- 11, Top |
Top + 1, |
|
|
ST<0) = ctg Л/3, ST( 1) = 1 + K2 |
|
|
Если последнюю команду FDIVRP заменить командой FDIVP, то будет вычислено значе ние tg 71/3.
Команда вычисления частичного арктангенса FPATAN. Все обратные тригонометриче ские функции выражаются через функцию arctg (Y/X) по известным формулам:
arcsin г = arctg {Y/X) - arctg ___- |
" |
|
V a - z ) * ( l + z) |
arctg г = arctg (Y/X) = arctg (z / 1), |
|
|
arcsec z = arctg (Y/X) = nrcig—— |
^ |
- |
^(г-1)-(г+1)
arccos z - 2 - arctg (Y/X) = 2 ■arctg ~ |
_ L , |
Vl + z |
arcctg г = arctg (Y/X) = arctg (1 / z), |
|
arccosec z ~ 2 - arctg (Y/X) = 2 • arctg |
, |
|
Jz + 1 |
где z — аргумент обратных тригонометрических функций. Поэтому в NDCP достаточно реали зовать вычисление только одной функции arctg z ~ arctg (Y/X), Значения же Y н X для соответ ствующих функций достаточно просто вычисляются с помощью арифметических команд NDCP по вышеприведенным формулам.
Команда FPATAN по заданному значению функции tg а = z выполняет вычисление в ра
дианах угла а = arctg z = arctg (Y/X): |
|
ST(1) <r- arctg (Y/X), Tag <~ 11, Top |
Top + 1, ST(0) = arctg (Y/X), |
где = ST и Y = ST(1) — исходные операнды (удаляются). Для исходных операндов должно удовлетворяться условие 0 < ST( 1) < ST(0) < -н».
Если в задаче 3 немедленно после команды FPTAN выполнить команду FPATAN, то будет
получено значение угла я/6 ~ 0.52359877559829887 = 3FFE 860А 91С1 6В9В 2С23 — Tempo rary Real.
Задача 4. Вычислить значение угла а по значению функции cos а = г = |
1 /^2 . Для функ |
ции arccos z значения Y и X определяются соотношениями Y = |
->[\ ~ z и X = |
Vl + z , которые и |
следует вычислить до выполнения команды FPATAN. Решение: |
|
|
|
; В сегменте кода |
|
|
FINIT |
|
; Инициализация ND CP (все регистры стека освобождаются) |
FLD1 |
|
; Тор <- Тор - 1, ST(0) +1.0, Tag(0) < - 00 |
|
FADD |
ST, ST |
; ST 2 |
|
|
FSQRT |
|
; ST < - 4 l = 0.70710678118654752 |
|
|
FLD1 |
|
; Top <- Top - 1, ST(0) <-+1.0, Tag(0) |
00, ST( 1) = V2 |
|