📄 gbk_pres.asm
字号:
.mmregs
.include ..\include\const.h
.include ..\include\ld8amem.h
.include ..\include\tab_ld8a.h
.include ..\include\qua_gain.h
.text
.def Gbk_presel
.asg "gcode0_org", gcode0
sft_y .set 16-(14+4+1) ; (Q[thr1]+Q[gcode0]+1)-Q[L_tmp_y]
sft_x .set 15-(15+4+1) ; (Q[thr2]+Q[gcode0]+1)-Q[L_tmp_x]
L_coef_To_coef .set 4
Gbk_presel:
STM #coef, AR5
;---------------------------------------------------------------------------
; x = (best_gain[1]-(coef[0][0]*best_gain[0]+coef[1][1])*gcode0) * inv_coef;
;---------------------------------------------------------------------------
LD *AR5, T
DLD *AR5(L_coef_To_coef+(1*2+1)*2), A
LD A, -15, A
MAC best_gain0, A
MPYA gcode0 ; B = L_preg
LD best_gain1, 7+2, A
SUB B, 2, A
STM #INV_COEF, T
MPYA A
DST A, L_tmp_x
;---------------------------------------------------------------------------
; y = (coef[1][0]*(-coef[0][1]+best_gain[0]*coef[0][0])*gcode0
; -coef[0][0]*best_gain[1]) * inv_coef;
;---------------------------------------------------------------------------
LD *AR5, T
DLD *AR5(L_coef_To_coef+(0*2+1)*2), A
LD A, -10, A
NEG A
MAC best_gain0, A
MPYA gcode0
LD B, A
LD *AR5(1*2-0), T
MPYA A
LD *AR5, T
MPY best_gain1, B
LD B, -3, B
SUB B, A
LD A, 2, A
STM #INV_COEF, T
MPYA A
DST A, L_tmp_y
LD gcode0, A
BCD Not_Greater_Than_Zero, ALEQ
STM #Thr1Q14, AR5
Greater_Than_Zero:
Do1_Cand1: ; pre select codebook #1
LD *AR5, T
MPY gcode0, B
DLD L_tmp_y, A
SUB B, sft_y, A
BC Break1, ALEQ
MAR *AR5+
LDM AR5, B
SUB #NCODE1-NCAN1+Thr1Q14, B
BC Do1_Cand1, BLT
Break1:
LDM AR5, A
SUB #Thr1Q14, A
STL A, cand1
STM #Thr2, AR5
Do1_Cand2: ; pre select codebook #2
LD *AR5, T
MPY gcode0, B
DLD L_tmp_x, A
SUB B, sft_x, A
BC Return1, ALEQ
MAR *AR5+
LDM AR5, B
SUB #NCODE2-NCAN2+Thr2, B
BC Do1_Cand2, BLT
Return1:
LDM AR5, A
SUB #Thr2, A
RETD
STL A, cand2
NOP
Not_Greater_Than_Zero:
Do2_Cand1:
LD *AR5, T
MPY gcode0, B
DLD L_tmp_y, A
SUB B, sft_y, A
BC Break2, AGEQ
MAR *AR5+
LDM AR5, B
SUB #NCODE1-NCAN1+Thr1Q14, B
BC Do2_Cand1, BNEQ
Break2:
LDM AR5, A
SUB #Thr1Q14, A
STL A, cand1
STM #Thr2, AR5
Do2_Cand2:
LD *AR5, T
MPY gcode0, B
DLD L_tmp_x, A
SUB B, sft_x, A
BC Return2, AGEQ
MAR *AR5+
LDM AR5, B
SUB #NCODE2-NCAN2+Thr2, B
BC Do2_Cand2, BNEQ
Return2:
LDM AR5, A
SUB #Thr2, A
RETD
STL A, cand2
NOP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -