📄 cor.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
;-------Begin calculating c0
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 ;(AR6) values sum ACC+=PREG*(2**shift)
SFR ;ACC>>=1
ADDB ;ACC+=ACCB
;----------------
SUB #256
BCND GLT256,LEQ ;JUMP IF C0<256
;-----IF C0>=256-----------
;----GET C----------
ADD #256
MAR *,AR1
SACL *+ ;ARP=1
SACH *+,0,AR6 ;ARP=6
;-----------------
MAR *-,AR2 ;AR6--,120-i
MAR *+,AR7 ;AR2++,*signal++
MAR *-,AR0
LAR AR0,AR2 ;AR2->AR0 ,ARP=0
B COR_256
;----IF C0<256-----------
GLT256
SPM 0
LAR AR0,#SIGNAL
;--------------------ARP=0
COR_256
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 COR_256,*-,AR0
RET
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -