📄 intan.asm
字号:
;SUBLSP .USECT "WARRAY",40
;OLDLSP .USECT "WARRAY",10
; .DATA
;INTANW .INT 7000H, 5000H, 3000H, 1000H, 1000H, 3000H, 5000H, 7000H
;LSP .INT 34eh,8ceh,1093h,171eh,24a6h,27b3h,2d4dh,34b3h,39b5h,3b57h
;LSPOLD .INT 3d7H,666H,0b85H,10a4H,1852H,1d71H, 251fH,2a3dH,31ecH,3852H
; wsublsp[4][10]:
; 3c5H, 6b3H, c26H, 1173H, 19dcH, 1eb9H, 2624H, 2b8bH, 32e5H, 38b2H,
; 3a3H, 74dH, d6aH, 1311H, 1cf1H, 2149H, 2830H, 2e29H, 34d7H, 3973H,
; 381H, 7e7H, eadH, 14b0H, 2006H, 23daH, 2a3bH, 30c6H, 36c9H, 3a35H,
; 35fH, 881H, ff1H, 164eH, 231bH, 266aH, 2c47H, 3364H, 38bbH, 3af6H,
;=================================
INTAN
LDP #IBUF
LAR AR0,#SUBLSP
LAR AR1,#INTANW
LAR AR4,#INTANW+4
LACC #15
SAMM TREG1
;==========================================
; for (i = 0; i < nn; i++)
; { for (j = 0; j < no; j++)
; { //lsp[i][j] = intw[0][i]*lspold[j] + intw[1][i]*lspnew[j];
; p32= (long)intw[0][i]*lspold[j] + (long)intw[1][i]*lspnew[j];
; lsp[i][j]=p32>>15; }
;==========================================
LAR AR7,#3
LAMM AR0 ;PIPELINE
;PUSH
SACL ACC_PUSH
MAR *,AR2
INTAN_FOR_I
LAR AR2,#LSPOLD
LAR AR3,#LSP
LACC #P10_1
SAMM BRCR
;MAR *,AR2
RPTB INTAN_FOR_J-1
LT *+,AR1
MPY *,AR3
LTP *+,AR4
MPY *,AR0
APAC
SATL
SACL *+,0,AR2
INTAN_FOR_J ;ARP=AR1
;==========================================
; for (j = 1; j < no; j++)
; { if (lsp[i][j] < lsp[i][j - 1])
; {tempfreq = lsp[i][j];
; lsp[i][j] = lsp[i][j - 1];
; lsp[i][j - 1] = tempfreq; } }
;==========================================
MAR *,AR0
SBRK #10
LACC #8
SAMM BRCR
LACC *+
SACB
RPTB INTAN_MONO1-1
LACC *
CRGT
BCND INTAN_MONO1_1,C ;jump if lsp[i][j]>=lsp[i][j-1]
LACC *-
SACL *+
LACB
SACL *
INTAN_MONO1_1
MAR *+
INTAN_MONO1
;==========================================
; for (j = 1; j < no; j++)
; { if (lsp[i][j] < lsp[i][j - 1])
; nonmono = TRUE; }
;==========================================
SBRK #P10
LACC #8
SAMM BRCR
LACC *+
SACB
RPTB INTAN_MONO2-1
LACC *+
CRGT
BCND INTAN_NOMONO,NC
INTAN_MONO2
B INTAN_NEXT_I
;==========================================
; if (nonmono)
; { for (j = 0; j < no; j++)
; { if (i == 0) lsp[i][j] = oldlsp[j];
; else lsp[i][j] = lsp[i - 1][j];
; } }
; }
;==========================================
INTAN_NOMONO
;POP
LACC ACC_PUSH
;PUSH
SAMM AR0 ;PIPELINE
SUB #SUBLSP
BCND INTAN_I_0,EQ
LAMM AR0
SUB #P10
B INTAN_NOMONO_1
INTAN_I_0
LACC #OLDLSP
INTAN_NOMONO_1
SAMM BMAR
MAR *,AR0
RPT #P10_1
BLDD BMAR,*+
;--------------
INTAN_NEXT_I
;POP
LACC ACC_PUSH
ADD #10
;PUSH
SACL ACC_PUSH
SAMM AR0
MAR *,AR1
MAR *+,AR4
MAR *+,AR7
BANZ INTAN_FOR_I,*-,AR2
;==========================================
; for (j = 0; j < no; j++)
; { lspold[j] = lspnew[j];
; oldlsp[j] = lsp[nn][j]; }
;==========================================
LAR AR0,#LSP
MAR *,AR0
LACC #LSPOLD
SAMM BMAR
RPT #P10_1
BLDD *+,BMAR
LACC #OLDLSP
SAMM BMAR
LAR AR0,#SUBLSP+30
RPT #P10_1
BLDD *+,BMAR
INTAN_RET
RET
;==========================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -