Пр о ц е с с о р TMS 3 2 0C4 x
176
Вычисление P / Q , где v = Q
RCPF
R1, R10
; x[0] = приближение 1/v
MPYF
R10, R1, R8
; R8 = vx[0]
SUBRF
2.0, R8
; R8 = 2.0 – vx[0]
MPYF
R8, R10
; R10 = x[1] = x[0](2.0 – vx[0])
MPYF
R10, R1, R8
; R8 = vx[1]
SUBRF
2.0, R8
; R8 = 2.0 – vx[1]
MPYF
R8, R10, R1
; R1 = x[2] = x[1](2.0 – vx[1])
RND
R1
MPYF
R1, R0
; R = P / Q
R0
MPYF
R4, R0
; R = Rf
ADDF
R4, R0
; R = R + f
NEGF
R0, R1
; – R
R1
CMPI
2, IR1
; сравнение N с 2
LDFP
R1, R0
; если N > 2, то R = –R
ADDI
1, IR1
; N = N + 1
IR1
LDF
++AR0(IR1), R2
; инициализация поля экспонен-
ты в R2
LDI
+AR0, R2
; a[ N ]
R2
ADDF
R2, R0
; R = R + a[ N ]
NEGF
R0, R1
; – R
R1
BD
R11
; возврат из подпрограммы
POPF
R2
; x
R2
LDFN
R1, R0
; если x < 0, то R1
R0
RND
R0
; округление R0
.data
ATAN_ADR: .word
ATAN
ATAN
.float 0.267949192431122
; 2 -
3
.float 1.732050807568877
;
3
.float –0.5090958253e–1
; P
1
.float –0.4708325141
; P
0
.float 0.141250074e+1
; Q
0
.float 0.0
; a[ 0 ] = 0.0
.int 0
.float 0.5
; a[ 1 ] = 0.5235987905
.int 101355969
.float 1.0
; a[ 2 ] = 1.570796355
.int 1225775779
.float 1.0
; a[ 3 ] = 1.047197805
.int 101355969
.end
I...,166,167,168,169,170,171,172,173,174,175 177,178,179,180,181,182,183,184,185,...186