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

📄 sinx.asm

📁 一些在CCS上可以运行的初级DSP汇编程序
💻 ASM
字号:
***************
** sinx.asm  **  
***************
        
        .title  "sinx.asm"

;This function evaluates the sine of an angle using
;the Taylor series expansion
; sin(theta)=x(1-x^2/2*3(1-x^2/4*5(1-x^2/6*7(1-x^2/8*9))))
        .mmregs
        .def    start
        .ref    sin_start,d_x,d_sinx
STACK:  .usect  "STACK",10
start:
        STM     #STACK+10,SP
        LD      #d_x,DP
        ST      #6488h,d_x       ;setup d_x
        CALL    sin_start
end:    B       end

sin_start:
        .def    sin_start
d_coeff .usect   "coeff",4                
        .data
table:  .word   01c7h            ;c1=1/(2*3)
        .word   030bh            ;c2=1/(4*5)
        .word   0666h            ;c3=1/(6*7)
        .word   1556h            ;c4=1/(8*9)
d_x       .usect  "sin_vars",1
d_squr_x  .usect  "sin_vars",1
d_temp    .usect  "sin_vars",1
d_sinx    .usect  "sin_vars",1
c_1       .usect  "sin_vars",1
        .text
        SSBX    FRCT
        STM     #d_coeff,AR5     ;move coeff stable
        RPT     #3
        MVPD    #table,*AR5+
        STM     #d_coeff,AR3
        STM     #d_x,AR2
        STM     #c_1,AR4
        ST      #7FFFh,c_1     
        SQUR    *AR2+,A          ;A=x^2
        ST      A,*AR2           ;AR2-->x^2
        || LD    *AR4,B          ;B=1
        MASR    *AR2+,*AR3+,B,A  ;A=1-x^2/72
                                 ;T=x^2
        MPYA    A                ;A=T*A=x^2(1-x^2/72)
        STH     A,*AR2           ;(d_temp)=x^2(1-x^2/72)
        MASR    *AR2-,*AR3+,B,A  ;A=1-x^2/42(1-x^2/72)
                                 ;T=x^2(1-x^2/72)
        MPYA    *AR2+            ;B=x^2(1-x^2/42(1-x^2/72))
        ST      B,*AR2           ;(d_temp)=x^2(1-x^2/42(1-x^2/72))
        || LD    *AR4,B          ;B=1
        MASR    *AR2-,*AR3+,B,A  ;A=1-x^2/20(1-x^2/42(1-x^2/72))
        MPYA    *AR2+            ;B=x^2(1-x^2/20(1-x^2/42(1-x^2/72)))
        ST      B,*AR2           ;(d_temp)=B=...
        || LD    *AR4,B          ;B=1
        MASR    *AR2-,*AR3+,B,A  ;A=1-x^2/6(1-x^2/20(1-x^2/42(1-x^2/72)))
        MPYA    d_x              ;B=x(1-x^2/6(1-x^2/20(1-x^2/42(1-x^2/72))))
        STH     B,d_sinx         ;sin(theta)
        RET
        .end

⌨️ 快捷键说明

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