⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fdct.asm

📁 DCT算法在DSP上的实现
💻 ASM
📖 第 1 页 / 共 5 页
字号:
        ADD   ROUND2, A              ; + 2*ROUND2
        STH   A, 1, Z70              ; = Z70
        
        MAR   *+AR2(8)               ; Set AR2 to point to the next set  
                                     ; of 8 inputs

*********************************************************************
;								    *
; PROCESS SECOND 8 INPUTS.    Y(0,1)...Y(7,1)  ->  Z(0,1)...Z(7,1)  *
;								    *
*********************************************************************

        LD     ROUND3, A             ; + ROUND3    
        ADD    *AR2+, 9, A           ; + (Y0)                                        
        ADD    *AR2+, 9, A           ; + (Y1)  
        ADD    *AR2+, 9, A           ; + (Y2) 
        ADD    *AR2+, 9, A           ; + (Y3) 
	ADD    *AR2+, 9, A           ; + (Y4) 
	ADD    *AR2+, 9, A           ; + (Y5) 
	ADD    *AR2+, 9, A           ; + (Y6) 
	ADD    *AR2, 9, A            ; + (Y7)  
	STH    A, Z01                ; = Z01


        RPTZ   A, #7                  
        MACP   *AR2-, COEF_F1, A         
        SFTA   A, -6                 
        MAR    *AR2+                 ; (128)[A*Y0+B*Y1+C*Y2-D*Y3-D*Y4
        ADD    ROUND2, A             ; -C*Y5-B*Y6-A*Y7] + 2*ROUND2    
        STH    A, 1, Z11             ; = Z11

        
        LD     ROUND2, -6, A         ; (ROUND1)/64           
        LD     E_P7, T                 
        MAC    *AR2+0, A             ; + Y0*E_P7
        MAS    *AR2+, A              ; - Y3*E_P7 
        MAS    *AR2+0, A             ; - Y4*E_P7
        MAC    *AR2-, A              ; + Y7*E_P7
        LD     F_P7, T                
	MAC    *AR2-, A              ; + Y6*F_P7
        MAS    *AR2-0, A             ; - Y5*F_P7
        MAS    *AR2-, A              ; - Y2*F_P7
        MAC    *AR2-, A              ; + Y1*F_P7                           
        STH    A, -5, Z21            ; Multiply prev summation by 128
                                     ; = Z21


        RPTZ   A, #7                  
        MACP   *AR2+, COEFF2, A      ; 128(B*Y0-D*Y1-A*Y2-C*Y3+C*Y4+A*Y5 
        SFTA   A, -6                 
        MAR    *AR2-                 
        ADD    ROUND2, A             ; +D*Y6-B*Y7) + 2*ROUND2               
        STH    A, 1, Z31             ; = Z31


        LD    ROUND3, A
	ADD   *AR2-, 9, A            ;   Y7
        SUB   *AR2-, 9, A            ; - Y6                
        SUB   *AR2-, 9, A            ; - Y5
        ADD   *AR2-, 9, A            ; + Y4
        ADD   *AR2-, 9, A            ; + Y3
        SUB   *AR2-, 9, A            ; - Y2 
        SUB   *AR2-, 9, A            ; - Y1
        ADD   *AR2, 9, A             ; + Y0
        STH   A, Z41                 ; = Z41

		
        RPTZ  A, #7                  
        MACP  *AR2+, COEFF3, A       ; 218(D*Y0-C*Y1+B*Y2-A*Y3+A*Y4-B*Y5 
        SFTA  A, -6                  ; +C*Y6-D*Y7) 
        MAR   *AR2-                  
        ADD   ROUND2, A              ; + 2*ROUND2
        STH   A, 1, Z51              ; = Z51


        LD    ROUND2, -6, A          ; (ROUND1)/64
        LD    F_P7, T                
        MAC   *AR2-0, A              ; + F_P7*X7
        MAS   *AR2-, A               ; - F_P7*X4
        MAS   *AR2-0, A              ; - F_P7*X3
        MAC   *AR2+, A               ; + F_P7*X0
        LD    E_P7, T
        MAS   *AR2+, A               ; - E_P7*X1 
        MAC   *AR2+0, A              ; + E_P7*X2
        MAC   *AR2+, A               ; + E_P7*X5
        MAS   *AR2+, A               ; - E_P7*X6
        STH   A, -5, Z61             ; Multiply prev summation by 128
                                     ; = Z61  

        RPTZ   A, #7
        MACP  *AR2-, COEF_F4, A      ; 128(D*Y0-C*Y1+B*Y2-A*Y3+A*Y4-B*Y5
        SFTA  A, -6                  ; +C*Y6-D*Y7)
        MAR   *AR2+                  
        ADD   ROUND2, A              ; + 2*ROUND2
        STH   A, 1, Z71              ; = Z71
        
        MAR   *+AR2(8)               ; Set AR1 to point to the next set  
                                     ; of 8 inputs

*********************************************************************
;								    *
; PROCESS THIRD 8 INPUTS.     Y(0,2)...Y(7,2)  ->  Z(0,2)...Z(7,2)  *
;								    *
*********************************************************************

        LD     ROUND3, A             ; + ROUND3    
        ADD    *AR2+, 9, A           ; + (Y0)                                        
        ADD    *AR2+, 9, A           ; + (Y1)  
        ADD    *AR2+, 9, A           ; + (Y2) 
        ADD    *AR2+, 9, A           ; + (Y3) 
	ADD    *AR2+, 9, A           ; + (Y4) 
	ADD    *AR2+, 9, A           ; + (Y5) 
	ADD    *AR2+, 9, A           ; + (Y6) 
	ADD    *AR2, 9, A            ; + (Y7)  
	STH    A, Z02                ; = Z02


        RPTZ   A, #7                  
        MACP   *AR2-, COEF_F1, A         
        SFTA   A, -6                 
        MAR    *AR2+                 ; (128)[A*Y0+B*Y1+C*Y2-D*Y3-D*Y4
        ADD    ROUND2, A             ; -C*Y5-B*Y6-A*Y7] + 2*ROUND2    
        STH    A, 1, Z12             ; = Z12

        
        LD     ROUND2, -6, A         ; (ROUND1)/64           
        LD     E_P7, T                 
        MAC    *AR2+0, A             ; + Y0*E_P7
        MAS    *AR2+, A              ; - Y3*E_P7 
        MAS    *AR2+0, A             ; - Y4*E_P7
        MAC    *AR2-, A              ; + Y7*E_P7
        LD     F_P7, T                
	MAC    *AR2-, A              ; + Y6*F_P7
        MAS    *AR2-0, A             ; - Y5*F_P7
        MAS    *AR2-, A              ; - Y2*F_P7
        MAC    *AR2-, A              ; + Y1*F_P7                           
        STH    A, -5, Z22            ; Multiply prev summation by 128
                                     ; = Z22


        RPTZ   A, #7                  
        MACP   *AR2+, COEFF2, A      ; 128(B*Y0-D*Y1-A*Y2-C*Y3+C*Y4+A*Y5 
        SFTA   A, -6                 
        MAR    *AR2-                 
        ADD    ROUND2, A             ; +D*Y6-B*Y7) + 2*ROUND2               
        STH    A, 1, Z32             ; = Z32


        LD    ROUND3, A
	ADD   *AR2-, 9, A            ;   Y7
        SUB   *AR2-, 9, A            ; - Y6                
        SUB   *AR2-, 9, A            ; - Y5
        ADD   *AR2-, 9, A            ; + Y4
        ADD   *AR2-, 9, A            ; + Y3
        SUB   *AR2-, 9, A            ; - Y2 
        SUB   *AR2-, 9, A            ; - Y1
        ADD   *AR2, 9, A             ; + Y0
        STH   A, Z42                 ; = Z42

		
        RPTZ  A, #7                  
        MACP  *AR2+, COEFF3, A       ; 218(D*Y0-C*Y1+B*Y2-A*Y3+A*Y4-B*Y5 
        SFTA  A, -6                  ; +C*Y6-D*Y7) 
        MAR   *AR2-                  
        ADD   ROUND2, A              ; + 2*ROUND2
        STH   A, 1, Z52              ; = Z52


        LD    ROUND2, -6, A          ; (ROUND1)/64
        LD    F_P7, T                
        MAC   *AR2-0, A              ; + F_P7*Y7
        MAS   *AR2-, A               ; - F_P7*Y4
        MAS   *AR2-0, A              ; - F_P7*Y3
        MAC   *AR2+, A               ; + F_P7*Y0
        LD    E_P7, T
        MAS   *AR2+, A               ; - E_P7*Y1 
        MAC   *AR2+0, A              ; + E_P7*Y2
        MAC   *AR2+, A               ; + E_P7*Y5
        MAS   *AR2+, A               ; - E_P7*Y6
        STH   A, -5, Z62             ; Multiply prev summation by 128
                                     ; = Z62  

        RPTZ   A, #7
        MACP  *AR2-, COEF_F4, A      ; 128(D*Y0-C*Y1+B*Y2-A*Y3+A*Y4-B*Y5
        SFTA  A, -6                  ; +C*Y6-D*Y7)
        MAR   *AR2+                  
        ADD   ROUND2, A              ; + 2*ROUND2
        STH   A, 1, Z72              ; = Z72
        
        MAR   *+AR2(8)               ; Set AR1 to point to the next set  
                                     ; of 8 inputs

*********************************************************************
;								    *
; PROCESS FOURTH 8 INPUTS.     Y(0,3)...Y(7,3)  ->  Z(0,3)...Z(7,3) *
;								    *
*********************************************************************

        LD     ROUND3, A             ; + ROUND3    
        ADD    *AR2+, 9, A           ; + (Y0)                                        
        ADD    *AR2+, 9, A           ; + (Y1)  
        ADD    *AR2+, 9, A           ; + (Y2) 
        ADD    *AR2+, 9, A           ; + (Y3) 
	ADD    *AR2+, 9, A           ; + (Y4) 
	ADD    *AR2+, 9, A           ; + (Y5) 
	ADD    *AR2+, 9, A           ; + (Y6) 
	ADD    *AR2, 9, A            ; + (Y7)  
	STH    A, Z03                ; = Z03


        RPTZ   A, #7                  
        MACP   *AR2-, COEF_F1, A         
        SFTA   A, -6                 
        MAR    *AR2+                 ; (128)[A*Y0+B*Y1+C*Y2-D*Y3-D*Y4
        ADD    ROUND2, A             ; -C*Y5-B*Y6-A*Y7] + 2*ROUND2    
        STH    A, 1, Z13             ; = Z13

        
        LD     ROUND2, -6, A         ; (ROUND1)/64           
        LD     E_P7, T                 
        MAC    *AR2+0, A             ; + Y0*E_P7
        MAS    *AR2+, A              ; - Y3*E_P7 
        MAS    *AR2+0, A             ; - Y4*E_P7
        MAC    *AR2-, A              ; + Y7*E_P7
        LD     F_P7, T                
	MAC    *AR2-, A              ; + Y6*F_P7
        MAS    *AR2-0, A             ; - Y5*F_P7
        MAS    *AR2-, A              ; - Y2*F_P7
        MAC    *AR2-, A              ; + Y1*F_P7                           
        STH    A, -5, Z23            ; Multiply prev summation by 128
                                     ; = Z23


        RPTZ   A, #7                  
        MACP   *AR2+, COEFF2, A      ; 128(B*Y0-D*Y1-A*Y2-C*Y3+C*Y4+A*Y5 
        SFTA   A, -6                 
        MAR    *AR2-                 
        ADD    ROUND2, A             ; +D*Y6-B*Y7) + 2*ROUND2               
        STH    A, 1, Z33             ; = Z33


        LD    ROUND3, A
	ADD   *AR2-, 9, A            ;   Y7
        SUB   *AR2-, 9, A            ; - Y6                
        SUB   *AR2-, 9, A            ; - Y5
        ADD   *AR2-, 9, A            ; + Y4
        ADD   *AR2-, 9, A            ; + Y3
        SUB   *AR2-, 9, A            ; - Y2 
        SUB   *AR2-, 9, A            ; - Y1
        ADD   *AR2, 9, A             ; + Y0
        STH   A, Z43                 ; = Z43

		
        RPTZ  A, #7                  
        MACP  *AR2+, COEFF3, A       ; 218(D*Y0-C*Y1+B*Y2-A*Y3+A*Y4-B*Y5 
        SFTA  A, -6                  ; +C*Y6-D*Y7) 
        MAR   *AR2-                  
        ADD   ROUND2, A              ; + 2*ROUND2
        STH   A, 1, Z53              ; = Z53


        LD    ROUND2, -6, A          ; (ROUND1)/64
        LD    F_P7, T                
        MAC   *AR2-0, A              ; + F_P7*Y7
        MAS   *AR2-, A               ; - F_P7*Y4
        MAS   *AR2-0, A              ; - F_P7*Y3
        MAC   *AR2+, A               ; + F_P7*Y0
        LD    E_P7, T
        MAS   *AR2+, A               ; - E_P7*Y1 
        MAC   *AR2+0, A              ; + E_P7*Y2
        MAC   *AR2+, A               ; + E_P7*Y5
        MAS   *AR2+, A               ; - E_P7*Y6
        STH   A, -5, Z63             ; Multiply prev summation by 128
                                     ; = Z63  

        RPTZ   A, #7
        MACP  *AR2-, COEF_F4, A      ; 128(D*Y0-C*Y1+B*Y2-A*Y3+A*Y4-B*Y5
        SFTA  A, -6                  ; +C*Y6-D*Y7)
        MAR   *AR2+                  
        ADD   ROUND2, A              ; + 2*ROUND2
        STH   A, 1, Z73              ; = Z73
        
        MAR   *+AR2(8)               ; Set AR1 to point to the next set  
                                     ; of 8 inputs

*********************************************************************
;								    *
; PROCESS FIFTH 8 INPUTS.     Y(0,4)...Y(7,4)  ->  Z(0,4)...Z(7,4)  *
;								    *
*********************************************************************

        LD     ROUND3, A             ; + ROUND3    
        ADD    *AR2+, 9, A           ; + (Y0)                                        
        ADD    *AR2+, 9, A           ; + (Y1)  
        ADD    *AR2+, 9, A           ; + (Y2) 
        ADD    *AR2+, 9, A           ; + (Y3) 
	ADD    *AR2+, 9, A           ; + (Y4) 
	ADD    *AR2+, 9, A           ; + (Y5) 
	ADD    *AR2+, 9, A           ; + (Y6) 
	ADD    *AR2, 9, A            ; + (Y7)  
	STH    A, Z04                ; = Z04


        RPTZ   A, #7                  
        MACP   *AR2-, COEF_F1, A         
        SFTA   A, -6                 
        MAR    *AR2+                 ; (128)[A*Y0+B*Y1+C*Y2-D*Y3-D*Y4
        ADD    ROUND2, A             ; -C*Y5-B*Y6-A*Y7] + 2*ROUND2    
        STH    A, 1, Z14             ; = Z14

        
        LD     ROUND2, -6, A         ; (ROUND1)/64           
        LD     E_P7, T                 
        MAC    *AR2+0, A             ; + Y0*E_P7
        MAS    *AR2+, A              ; - Y3*E_P7 
        MAS    *AR2+0, A             ; - Y4*E_P7
        MAC    *AR2-, A              ; + Y7*E_P7
        LD     F_P7, T                
	MAC    *AR2-, A              ; + Y6*F_P7
        MAS    *AR2-0, A             ; - Y5*F_P7
        MAS    *AR2-, A              ; - Y2*F_P7
        MAC    *AR2-, A              ; + Y1*F_P7                           

⌨️ 快捷键说明

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