laplacian.asm

来自「DSP学习讲座」· 汇编 代码 · 共 81 行

ASM
81
字号
        
loopcount       .set 65022
imagesize       .set 256 
                    
operator        .sect"laplacian" 
                .byte -1
                .byte -1
                .byte -1                
                .byte -1
                .byte 8
                .byte -1
                .byte -1
                .byte -1
                .byte -1 ;输入拉普拉斯算子矩阵系数
operator_end
bos             .usect"stack",12 

                .data
output          .space 0x10000;把要处理的图像数据输入到RAM
input           .copy Lenna;初始化输出空间

                .text
                .def line
                .def end 
                .def laplacian_int
                .def laplacian_task
laplacian_int:
                mvkl input,a1
                mvkh input,a1;
                mvkl operator,a4
                mvkh operator,a4                
                mvkl bos,b15
                mvkh bos,b15
                mvkl output,b10
                mvkh output,b10
                mvkl loopcount,b0
                mvkh loopcount,b0
                mvkl imagesize,b9
                mvkh imagesize,b9
                stw  a4,*b15++
                stw  a1,*b15;入栈
                mvk  3,b2
                mvk  3,a2
                mvk  0,b6;累加器初始化                                
laplacian_task: 
line:           
                ldbu *a1++,b3
                nop  4
                ldb  *a4++,b4
                nop  4
                mpyus  b3,b4,b5
                nop                                                                                
                add  b5,b6,b6                                                                               
                sub  b2,1,b2;完成一次像素与系数相乘
            [b2]b    line
                nop  5                                                                                                   
                mvk  3,b2;
                sub  a1,3,a1;                
                add  a1,b9,a1
                sub  a2,1,a2
            [a2]b    line
                nop  5                                                                                                                                   
                mvk  3,a2;
                ldw  *b15,a1
                nop  4      
                add  a1,1,a1
                stw  a1,*b15
                ldw  *--b15,a4
                nop  4    
                abs  b6,b6               
                cmpgt b6,b9,b1
            [b1]mvk  255,b6                                  
                stb  b6,*b10++;
                mvk  0,b6;累加器初始化                
                sub  b0,1,b0 
                add  b15,4,b15                
            [b0]b    line
                nop  5                                                                                                                                                                                                               
end:            b    end
                nop  5
                .end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?