📄 getcor1.asm
字号:
; .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
;----AR1->(long)COR[11]**, AR0->SIGNAL[240]
;----used AR7,AR6,AR2,SPM 0,
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
SACH *+ ;ARP=1
SACL *+,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
SACH *+ ;ARP=1
SACL *+,0,AR6 ;ARP=6
;-----------------
MAR *-,AR2 ;AR6--,120-i
MAR *+,AR7 ;AR2++,*signal++
LAR AR0,AR2 ;AR2->AR0 ,ARP=7
BANZ COR_256,*-,AR0
SPM 0
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -