Добавил:
kostikboritski@gmail.com Выполнение курсовых, РГР технических предметов Механического факультета. Так же чертежи по инженерной графике для МФ, УПП. Писать на почту. Дипломы по кафедре Вагоны Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

литература / Пухальский Проектирование микропроцессорных систем 2001

.pdf
Скачиваний:
334
Добавлен:
12.11.2017
Размер:
21.12 Mб
Скачать

 

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

 

32*