📄 wsin1.asm
字号:
; .data
;SINCOR .INT 0EAABH,111H,0FFF9H
;----------
WSIN1
SACB
LDP #STATUS
SST #0,STATUS
SST #1,STATUS+1
LAMM AR0
PUSH
;==============
LACB
RETCD EQ ;if(a==0) return 0;
SFL ;ax0=(int)a<<2;
SFL
SACL ACCBUF
SACB
LACC #15
SAMM TREG1
SQRA ACCBUF ;TREG0=a
PAC
SATL ;ACC>>15
SACL ACCBUF ;ACCBUF=((long)ax0*ax0)>>15; //1.15
LACC #2
SAMM BRCR
LAR AR0,#SINCOR
MAR *,AR0
; for(i=0;i<3;i++)
; { p32=(ax0*accb)>>15; ax0=p32; p32*=fscor[i]; acc+=(p32>>15);}
RPTB WSIN1_1-1
MPY ACCBUF
PAC
SATL
SAMM TREG0 ;pow(ax0,n)->TREG0, ACCBUF=(ax0*ax0)>>15
MPY *+
PAC
SATL
ADDB
SACB
WSIN1_1
;=============
LST #0,STATUS
LST #1,STATUS+1
POP
SAMM AR0
LACB
RET
;=====================
; if(a==0) return 0;
; ax0=(int)a<<2;
; accb=((long)ax0*ax0)>>15; //1.15
; acc=ax0;
; for(i=0;i<3;i++)
; { p32=ax0*accb; p32>>=15; ax0=p32;
; p32*=fscor[i]; p32>>=15; acc+=p32; }
; return (float)acc;
;--------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -