transform.asm

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

ASM
59
字号


            
                   .data
output             .space 0x10000                            
input              .copy  imginput1      
bos                .usect"stack",8                 
_coeff_tran_start .sect"coeff_float"
                   .float 0.144
                   .float 0.587
                   .float 0.299                   
_coeff_tran_end
                   .text                
                   .def tran_int
                   .def tran_start
                   .def  big
                   .def  small                                     
tran_int:
          mvkl  _coeff_tran_start,b3
          mvkh  _coeff_tran_start,b3;变换系数指针
          mvkl  output,a0
          mvkh  output,a0;输出地址指针
          mvkl  input,a2
          mvkh  input,a2;输入地址指针
          mvkl  bos,a5
          mvkh  bos,a5;堆栈指针
          stw   b3,*a5;入栈
          mvkl  65535,a1
          mvkh  65535,a1           
          mvk   54,b2;头文件的字节数            
tran_start:
          add  a2,b2,a2;跳过头文件
big:      mvk   0,b8
          mvk   3,b0;初始化循环计数器
small:    ldw   *b3++,b4
          nop   5     
          ldbu   *a2++,b1
          nop   5                    
          intsp b1,b2          
          nop   5                   
          mpysp b2,b4,b7
          nop   5         
          addsp   b7,b8,b8
          nop   5                   
          sub   b0,1,b0;完成单次乘操作
      [b0]b     small             
          nop   5
          ldw   *a5,b3
          nop   5
          spint b8,b8
          nop   5
          stb   b8,*a0++                     
          sub   a1,1,a1;完成一个像素的变换            
      [a1]b     big   
          nop   5                          
end:     b     end
          nop   5
          .end 
          

⌨️ 快捷键说明

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