📄 sin.asm
字号:
.mmregs
.def sinx , d_xs , d_sinx
sinx:
.data
table_s .word 0x01C7
.word 0x030B
.word 0x0666
.word 0x1556
d_coef_s .usect "coef_s" , 4
d_xs .usect "sin_vars" , 1
d_squr_xs .usect "sin_vars" , 1
d_temp_s .usect "sin_vars" , 1
d_sinx .usect "sin_vars" , 1
c_1_s .usect "sin_vars" , 1
.text
SSBX FRCT
STM #d_coef_s , AR5
RPT #3
MVPD #table_s , *AR5+
STM #d_coef_s , AR3
STM #d_xs , AR2
STM #c_1_s , AR4
ST #0x7fff , c_1_s
SQUR *AR2+ , A
ST A , *AR2 ;A(31..16)=>*AR2 ; AR2->d_squr_xs
||LD *AR4 , B ;B<=1
MASR *AR2+ , *AR3+ , B , A ;(1-x^2/72)=>A ; T<=*AR2(x^2) ; AR2->d_temp_s with rounding
MPYA A ;x^2 * (1-x^2/72)=>A
STH A ,*AR2 ;A(31..16)=>d_temp_s
MASR *AR2- , *AR3+ , B , A ;(1-1/42*x^2(1-x^2/72))=>A with rounding ; T<=*(d_temp_s) ; AR2->d_squr_s
MPYA *AR2+ ;B<= A(31..16) * x^2 AR2->d_temp_s
ST B ,*AR2 ;B>>16=>@d_temp_s
||LD *AR4, B ;B<=1
MASR *AR2- , *AR3+ , B ,A ;(1-x^2/20*(1-x^2/42(1-x^2/72)))=>A with rounding
;AR2->x^2
MPYA *AR2+ ;A(31..16)*x^2=>B , AR2->d_temp_s
ST B , *AR2 ;B(31..16)=>*(d_temp_s)
||LD *AR4 ,B ;B<=1
MASR *AR2- , *AR3+ , B ,A ;last compute ;T<=@d_temp_s
MPYA d_xs ;B<=x(1-x^2/6(1-x^2/20(1-x^2/42(1-x^2/72))))
STH B ,d_sinx
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -