Пр о ц е с с о р TMS 3 2 0C4 x
180
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
; R0 = P ( 1/(Q – P) )
ADDF
0.5, R0
; R0 = 0.5 + R0
ADDI
1, R6
; INT{x} + 1
→
R6
PUSHF
R0
; извлечениe экспоненты x
POP
R1
;
ASH
-24, R1
;
ADDI
R6, R1
; сложение N и экспоненты x
ASH
24, R1
; восстановление экспоненты x
PUSH
R1
; преобразование в формат ПТ
POPF
R1
; сохранение в R1
LDE
R1, R0
; загрузка экспоненты в результат
BUD
R11
NOP
NOP
NOP
.data
EXP_ADR: .word
EXP
EXP
.float
1.44269504088896
; 1 / ln2
.float
0.693359375
; L
2
.float
–2.1219444005469e–4
; L
1
( L
1
+ L
2
= ln2 )
.float
0.41602886268e–2
; P
1
.float
0.249999995
; P
0
.float
0.49987178778e–1
; Q
0
.end
Пример Д.12. Программа амплитудного ограничителя
; Обработка одного комплексного отсчета сигнала
; Регистры на входе:
AR0 – адрес входного массива X
; Регистры на выходе:
AR1 – адрес выходного массива X
; Используемые регистры:
R0, R1, R2, R3
; Память: код
31 слово
; Время выполнения
31 цикл ( 1.24 мкс )
LIMITER
MPYF3
∗
AR0++(0),
∗
AR0++(1), R0
; x
2
MPYF3
∗
AR0++(0),
∗
AR0--(1), R1
; y
2
ADDF
R1, R0
; x
2
+ y
2
LDF
R0, R3
; сохранение R0
; Вычисление квадратного корня