📄 sinx_2.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 + -