Пр о ц е с с о р TMS 3 2 0C4 x
170
SUBF
R0, R1
; x = x – R0
MPYF
AR0++, R2, R0
; C
6
X
n
R0
SUBF
R0, R1
; f = x – X
n
⋅ π
/2
MPYF
R1, R1, R3
; g = f
2
MPYF
AR0++, R3, R5
; P
1
g
R5
MPYF
R1, R5
; fR4
R5
ADDF
R1, R5
; P(4) = f + R5
R5
MPYF
AR0++, R3, R0
; Q
2
g
R0
ADDF
AR0++, R0
; Q
1
+ R0
R0
TSTB1, R6
; проверка N на четность
BNZD
TANB1
; переход на TANB1, если N нечетное
MPYF
R3, R0
; R0g
R0
ADDF
1.0, R0
; Q(4) = R0 + 1
R0
NEGF
R5, R1
; P(4) = – P(4)
R1
LDF
R0, R1
; если N четное, Q(4)
R1
LDF
R5, R0
; P(4)
R0
TANB1:
; вычисление отношения полиномов u = R0, v = R1
RCPF
R1, R5
; px[0] = приближение 1/v
MPYF
R5, R1, R6
; R6 = v
px[0]
SUBRF
2.0, R6
; R6 = 2.0 – v
px[0]
MPYF
R6, R5
; R5 = px[1] = px[0](2.0 – v
px[0])
MPYF
R5, R1, R6
; R6 = v
px[1]
SUBRF
2.0, R6
; R6 = 2.0 – v
px[1]
BD
R11
MPYF3
R6, R5, R1
; R1 = px[2] = px[1](2.0 – v
px[1])
RND
R1
; округление перед MPYF
MPYF
R1, R0
; tg(x) = u(1/v)
R0
.data
TAN_ADR:
.wordTAN
TAN
.float
0.636619772367581
; 2/
π
.float
1.5703125
; C
5
.float
4.83826794897e–4
; C
6
(C
5
+ C
6
=
π
/2)
.float
–0.9580177e–1
; P
1
.float
0.971685835e–2
; Q
2
.float
–0.429135777
; Q
1
.end
I...,160,161,162,163,164,165,166,167,168,169 171,172,173,174,175,176,177,178,179,180,...186