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

📄 sinx_2.asm

📁 在DSP2407上的一个求sinx的函数实现
💻 ASM
字号:

 .def _c_int0
 .bss dataspace,9                  ;200存x,201存x2,202存sin(x),207暂存 1-x2/var1 ,208暂存
 .sect "sinx"
  B START
 .text
_c_int0
START: LDP #4 
 SPLK #1999h,0                    ;x=0.20
 SPLK #01C7h,3                    ;203存1/72
 SPLK #030Ch,4                    ;204存1/42
 SPLK #0666h,5                    ;205存1/20
 SPLK #1555h,6                    ;206存1/6
 SPLK #7FFFh,7                    ;207存1
 SPM 1                            ;选择移位方式
 LT  0h                           ;装x到TREG
 MPY #0                           ;清PREG
 MPY 0h                           ;计算X2,并存到PREG
 SPH 1h                           ;将X2存到201中 
var .set 3h
LOOP .macro var
      LT 1h                       ;将X2送到TREG
      MPY #0                      ;清PREG
      MPY var                     ;计算X2/VAR1,并存到PREG
      SPH 02h                      ;将X2/VAR1存到02h
      LT 07h                      ;将X2/VAR2(1-X2/VAR)送到T寄存器
      MPY 02h
      SPH 02h  
      LACC #7FFFh                 ;0.9999695(Q15最大值) 近似1 将1送累加器 
      SUB 02h                     ;将1-x2/VAR1送到累加器ACC中 
      SACL 07h                            
      .endm
 LOOP 4h 
 LOOP 5h
 LOOP 6h
 LT 0h
 MPY 07h          ;计算x*(1-x2/6*(1-x2/20*(1-x2/42*(1-x2/72)))),即sinx,并存到PREG
 SPH 02h          ;将PREG的内容sinx送到202中 ,
 LACC 02h 
WAIT: B WAIT
 .end

⌨️ 快捷键说明

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