📄 funcs.asm
字号:
ADD .L2X B10, A10, B10
|| AND .S2 B6, B0, B2
SHRU .S2 B6, 8, B6
|| ADD .L2 B10, B2, B10
AND .L1 A9, A0, A11
|| AND .L2 B9, B0, B11
|| SHRU .S1 A9, 8, A5
|| SHRU .S2 B9, 8, B5
ADD .L2X B11, A11, B11
|| AND .S2 B6, B0, B2
SHRU .S2 B6, 8, B6
|| ADD .L2 B11, B2, B11
AND .L1 A5, A0, A12
|| AND .L2 B5, B0, B12
|| SHRU .S1 A5, 8, A9
|| SHRU .S2 B5, 8, B9
ADD .L2X B12, A12, B12
|| AND .S2 B6, B0, B2
SHRU .S2 B6, 8, B6
|| ADD .L2 B12, B2, B12
AND .L1 A9, A0, A13
|| AND .L2 B9, B0, B13
|| AND .S2 B6, B0, B2
ADD .L2X B13, A13, B13
ADD .L2 B13, B2, B13
ADD .L2 B7, B8, B7
ADD .S2 B7, B10, B7
|| ADD .L2 B8, B10, B8
CMPGTU .L2X B7, A7, B7
|| ADD .S2 B8, B11, B8
MPY .M2 B7, B0, B7
|| CMPGTU .L2X B8, A7, B8
ADD .L2 B10, B11, B10
STB .D2 B7, *B4++
|| MPY .M2 B8, B0, B8
ADD .S2 B10, B12, B10
|| ADD .L2 B11, B12, B11
CMPGTU .L2X B10, A7, B10
|| ADD .S2 B11, B13, B11
MPY .M2 B10, B0, B10
|| CMPGTU .L2X B11, A7, B11
STB .D2 B8, *B4++
|| MPY .M2 B11, B0, B11
STB .D2 B10, *B4++
STB .D2 B11, *B4++
[A1] B NextPixW
MV .L2 B12, B7
MV .S2 B13, B8
SUB .L1 A1, 1, A1
NOP 2
LDW *B15++, B13
LDW *B15++, B12
LDW *B15++, B11
LDW *B15++, B10
LDW *B15++, B9
LDW *B15++, B8
LDW *B15++, B7
LDW *B15++, B6
LDW *B15++, B5
LDW *B15++, B2
LDW *B15++, B1
LDW *B15++, B0
LDW *B15++, A13
LDW *B15++, A12
LDW *B15++, A11
LDW *B15++, A10
LDW *B15++, A9
LDW *B15++, A7
LDW *B15++, A6
LDW *B15++, A5
LDW *B15++, A2
LDW *B15++, A1
LDW *B15++, A0
NOP 4
B B3
NOP 5
;==============================================================
;子程序名: SquareX
;功 能: 区域平方和
;输入参数: 模板首地址A4,模板容量B4
;==============================================================
_SquareX:
STW A0, *--B15
STW A1, *--B15
STW A2, *--B15
STW A5, *--B15
STW A6, *--B15
STW A7, *--B15
STW A9, *--B15
STW A10, *--B15
STW A11, *--B15
STW A12, *--B15
STW A13, *--B15
STW B0, *--B15
STW B1, *--B15
STW B2, *--B15
STW B5, *--B15
STW B6, *--B15
STW B7, *--B15
STW B8, *--B15
STW B9, *--B15
STW B10, *--B15
STW B11, *--B15
STW B12, *--B15
STW B13, *--B15
SHRU .S2 B4, 2, B0
SUB .L2 B0,1,B0
MVK .S1 0, A0
MVK .S1 0xFF, A2
LDW .D1 *A4++, A8
NOP 4
LOOPX2: AND .L1 A8, A2, A10
|| SHRU .S1 A8, 8, A9
MPY .M1 A10, A10, A5
AND .L1 A9, A2, A11
|| SHRU .S1 A9, 8, A8
MPY .M1 A11, A11, A6
|| ADD .L1 A0, A5, A0
AND .L1 A8, A2, A12
|| SHRU .S1 A8, 8, A9
MPY .M1 A12, A12, A7
|| ADD .L1 A0, A6, A0
AND .L1 A9, A2, A13
MPY .M1 A13, A13, A5
|| ADD .L1 A0, A7, A0
[B0] B LOOPX2
LDW .D1 *A4++, A8
SUB .L2 B0, 1, B0
|| ADD .L1 A0, A5, A0
NOP 3
MV .L1 A0, A4
LDW *B15++, B13
LDW *B15++, B12
LDW *B15++, B11
LDW *B15++, B10
LDW *B15++, B9
LDW *B15++, B8
LDW *B15++, B7
LDW *B15++, B6
LDW *B15++, B5
LDW *B15++, B2
LDW *B15++, B1
LDW *B15++, B0
LDW *B15++, A13
LDW *B15++, A12
LDW *B15++, A11
LDW *B15++, A10
LDW *B15++, A9
LDW *B15++, A7
LDW *B15++, A6
LDW *B15++, A5
LDW *B15++, A2
LDW *B15++, A1
LDW *B15++, A0
B B3
NOP 5
;==============================================================
;子程序名: MutualityH
;功 能: 两块区域做相关
;输入参数: 模板首地址啊A4,区域二首地址B4,模板容量A6,模板宽度B6,
; 区域宽度A8,
;输出参数: 返回值1--B8, 返回值2--A10
;==============================================================
_MutualityH:
STW A0, *--B15
STW A1, *--B15
STW A2, *--B15
STW A3, *--B15
STW A5, *--B15
STW A7, *--B15
STW A9, *--B15
STW A11, *--B15
STW A12, *--B15
STW A13, *--B15
STW B0, *--B15
STW B1, *--B15
STW B2, *--B15
STW B5, *--B15
STW B7, *--B15
STW B9, *--B15
STW B10, *--B15
STW B11, *--B15
STW B12, *--B15
STW B13, *--B15
MV .L1 A6, A1 ;模板容量赋给A1
|| MV .L2 B6, B1 ;模板宽度赋给B1
SHRU .S1 A1, 2, A1
|| SHRU .S2 B1, 2, B1
SUB .L1 A8, B6, A5 ;区域宽度赋给A5
MV .S1X B8, A6 ;返回值赋给A6
LDW .D1 *A4++, A8
|| LDH .D2 *B4++, B8
SUB .L1 A1, 1, A1
MV B1, A3
MV .D1 A10, A7 ;返回值赋给A7
|| MVK .S1 0xFF, A2
|| MVK .S2 0xFF, B2
MVK .S1 0, A0
|| MVK .S2 0, B0
LOOPHX:
AND .L1 A8, A2, A10
|| AND .L2 B8, B2, B10
|| SHRU .S1 A8, 8, A9
|| SHRU .S2 B8, 8, B9
MPYU .M1X A10, B10, A10
|| MPYU .M2 B10, B10, B5
LDH .D2 *B4++, B8
AND .L1 A9, A2, A11
|| AND .L2 B9, B2, B11
|| SHRU .S1 A9, 8, A8
MPYU .M1X A11, B11, A11
|| MPYU .M2 B11, B11, B6
|| ADD .L1 A0, A10, A0
|| ADD .L2 B0, B5, B0
NOP 2
AND .L1 A8, A2, A12
|| AND .L2 B8, B2, B12
|| SHRU .S1 A8, 8, A9
|| SHRU .S2 B8, 8, B9
MPYU .M1X A12, B12, A12
|| MPYU .M2 B12, B12, B7
|| ADD .L1 A0, A11, A0
|| ADD .L2 B0, B6, B0
|| SUB .S2 B1, 1, B1
AND .L1 A9, A2, A13
|| AND .L2 B9, B2, B13
MPYU .M1X A13, B13, A13
|| MPYU .M2 B13, B13, B5
|| ADD .L1 A0, A12, A0
|| ADD .L2 B0, B7, B0
||[!B1] ADD .S2 B4, A5, B4
[A1] B LOOPHX
LDW .D1 *A4++, A8
|| LDH .D2 *B4++, B8
ADD .L1 A0, A13, A0
|| ADD .L2 B0, B5, B0
|| SUB .S1 A1, 1, A1
[!B1] MV A3, B1
NOP 2
STW .D1 A0, *A6
MV .S1X B0, A0
STW .D1 A0, *A7
LDW *B15++, B13
LDW *B15++, B12
LDW *B15++, B11
LDW *B15++, B10
LDW *B15++, B9
LDW *B15++, B7
LDW *B15++, B5
LDW *B15++, B2
LDW *B15++, B1
LDW *B15++, B0
LDW *B15++, A13
LDW *B15++, A12
LDW *B15++, A11
LDW *B15++, A9
LDW *B15++, A7
LDW *B15++, A5
LDW *B15++, A3
LDW *B15++, A2
LDW *B15++, A1
LDW *B15++, A0
B B3
NOP 5
;==============================================================
;子程序名: GetInitSqrt
;功 能: 用牛顿迭代求方根时计算迭代初始值
;输入参数: 待开方的整数---A4
;输出参数: 初始值---A4
;==============================================================
_GetInitSqrt:
STW A3, *--B15
|| LMBD .L1 1, A4, A4
|| MVK .S1 32, A3
B .S2 B3
LDW *B15++, A3
SUB .L1 A3, A4, A3
MVK .S1 1, A4
SHRU .S1 A3, 1, A3
SHL .S1 A4, A3, A4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -