Пр о ц е с с о р TMS 3 2 0C4 x
168
.data
SIN_ADR .word
SIN
SIN
.float
0.318309886183790
; 1/
π
.float
3.140625
; C
1
.float
9.67653589793e–4
; C
2
(C
1
+ C
2
=
π
)
.float
0.2601903036e–5
; a
9
.float
–0.1980741872e–3
; a
7
.float
0.8333025139e–2
; a
5
.float
–0.1666665668
; a
3
.end
Пример Д.5. Программа вычисления
cos
(x)
; Регистры на входе:
R0 – аргумент x
; Регистры на выходе:
R0 – значение функции cos(x)
; Используемые регистры:
R1, R2, R3, AR0, AR1
; Вызов
LAJ Cosin
; Память: код
29 слов
;
константы
9 слов
; Время выполнения
9 циклов ( 1.16 мкс)
.global
Cosin
Cosin
LDPK
COS_ADR
ABSF
R0, R2
; X - абсолютное значение x
LDI
@COS_ADR, AR0
ADDF
∗
AR0++, R2, R1
; X +
π
/ 2
MPYF
∗
AR0++, R1
; X(1/
π
)
→
R1
ADDF
0.5, R1
FIX
R1, R0
; N = целое от R1
FLOAT
R0, R1
; X
n
= ПТ от N
TSTB1, R0
; проверка N на четность
LDINZ
-1, AR1
; если N нечетное, – 1
→
R3
LDIZ
1, AR1
; если N четное, 1
→
R3
SUBF
0.5, R1
; sign
⋅
R3
→
R3
MPYF
∗
AR0++, R1, R3
; C
1
X
n
→
R3
SUBF
R3, R2
; X – R3
→
R3
MPYF
∗
AR0++, R1, R3
; C
2
X
n
→
R2
SUBF
R3, R2, R0
; f = X – X
n
⋅π
MPYF
R0, R0, R3
; q = f
2
MPYF
∗
AR0++, R3, R2
; a
9
q
→
R2
ADDF
∗
AR0++, R2
; a
7
+ R2
→
R2
MPYF
R3, R2
; qR2
→
R2