📄 cor1.asm
字号:
.version 50
.mmregs
.bss T1,1
.bss T2,1
.BSS COR,11*2 ;COR[11] long type
.bss SIGNAL,240
FLEN .SET 240
HFLEN .SET 120 ;FLEN/2
HFLEN_1 .SET 120-1
.data
S0 .copy "s_10.dat" ;240 signal values
TCOR .COPY "C_10.DAT"
.text
CALL C50_INIT
call GETCOR
here: NOP
B here
.include "c50_init.asm"
GETCOR
LDP #0
SPLK #S0,BMAR
MAR *,AR0
lar ar0,#SIGNAL ;AR0->SIGNAL
RPT #239
BLPD BMAR,*+ ;S0[]->SIGNAL[240]
;-------------------
LAR AR0,#SIGNAL
LAR AR1,#COR ;AR1->COR,AR0->SIGNAL
LAR AR2,AR0
LAR AR6,#HFLEN_1 ;120-i,AR6--
LAR AR7,#10 ;REPEAT COUNT
SPM 3
;--------------------ARP=0
GETCOR0
ZAP
RPT #HFLEN_1
MAC #SIGNAL,*+
APAC ;120 values sum ACC+=PREG*(2**shift)
SFR ;ACC>>=1
SACB ;ACC->ACCB
;-----------
ZAP
RPT AR6 ;AR6->RPTC
MAC #SIGNAL+120,*+
APAC ;120 values sum ACC+=PREG*(2**shift)
SFR ;ACC>>=1
ADDB ;ACC+=ACCB
;----GET C----------
MAR *,AR1
SACL *+ ;ARP=1
SACH *+,0,AR6 ;ARP=6
;-----------------
MAR *-,AR2 ;AR6--,120-i
MAR *+,AR7 ;AR2++,*signal++
LAR AR0,AR2 ;AR2->AR0 ,ARP=7
BANZ GETCOR0,*-,AR0
; for (i = 0; i < n; i++)
; { for (*(c+i) = 0.0, k = i+1; k < idim; k++)
; *(c+i) += *(rar+k) * *(rar+k-i-1); }
;---------------
; for (i = 0; i < n; i++)
; { for (acc=0l,*(c+i) = 0.0, k = i+1; k < idim/2; k++)
; { // *(c+i) += *(rar+k) * *(rar+k-i-1);
; ax0=rar[k];
; ax1=rar[k-i-1];
; p32=(long)ax0*ax1;
; acc+=(p32>>shift6);
; }
; c[i]=(float)(acc>>shift1);
; for (acc=0l, k = idim/2; k < idim; k++)
; { // *(c+i) += *(rar+k) * *(rar+k-i-1);
; ax0=rar[k];
; ax1=rar[k-i-1];
; p32=(long)ax0*ax1;
; acc+=(p32>>shift6);
; }
; c[i]=c[i]+(float)(acc>>shift1);
RET
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -