📄 cor_h_x.asm
字号:
*****************************************************************************
** Description: cor_h_x() in cor_h.c **
** **
** Inputs **
** **
** xar2---Word16 h[] **
** xar3---Word16 x[] **
** ar4 ---Word16 sf **
** **
** **
** Outputs: **
** **
** xar1---Word16 dn[] **
** **
** **
** **
** Return value : none **
** **
** Attribute : Cycles: 40176 Pm:63 **
** Modified Registers: all **
** **
** Programmer : Qi Ying **
*****************************************************************************
.global _cor_h_x
.ref _buffer1
.ref _buffer2
.ref _buffer3
_cor_h_x:
push xar1
movl xar6, #_buffer3 ;y32[]
push xar4
movb xar5, #5 ;xar5=tot
mov al, #0
mov pl, al ;pl=k
_Loop_92:
cmp pl, #5
sb _Line_111, GEQ ;k>=5就跳出循环
push p
movb xar4, #0 ;xar4=max
movz ar0, pl ;ar0=i=k
_Loop_95:
cmp ar0, #40
sb _Line_108, GEQ ;i>=40就跳出循环
push xar0
push xar3
movl acc, xar3
addl acc, xar0
movl xar3, acc ;x[j]
movb al, #39
sub al, ar0
mov ar0, al
movl xar7, xar2 ;h
zapa
rpt ar0
;_Loop_98:
; cmp ar0, #40
; sb _Line_101, GEQ
||mac p,*xar3++,*xar7++
; inc ar0 ;j++
; sb _Loop_98, UNC
;_Line_101:
addl acc, p<<pm
pop xar3
pop xar0
movl *xar6, acc ;y32[i]=s
abs acc ;acc=L_abs (s)
cmpl acc, xar4
sb _Line_107, LEQ
movl xar4, acc ;max=s
_Line_107:
addb xar0, #5 ;i+= step
addb xar6, #10
sb _Loop_95, UNC
_Line_108:
movb al, #1
mov T, al
movl acc, xar4
lsrl acc, T ;max右移一位
addl xar5, acc
pop p
inc pl ;pl++
subb xar6, #78 ;xar6-80+2
sb _Loop_92, UNC
_Line_111:
pop xar4
movl acc, xar5
movb xar6, #0
sbf skip, EQ ;acc=0就跳转
_Loop_111:
norm acc, xar6++
sb _Loop_111, NTC ;norm_l(tot)
skip:
mov al, ar6
sub al, ar4
mov T, al ;j放入T
pop xar1 ;dn
movb xar0, #0 ;ar0=i
movl xar6, #_buffer3 ;y32[]
_Loop_113:
cmp ar0, #40
sb _Line_117, GEQ
movl acc, *xar6++ ;y32[i]
lsll acc, T
add acc, #0x0800<<#4
mov *+xar1[ar0], ah ;dn[i]
inc ar0
sb _Loop_113, UNC
_Line_117:
LRETR
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -