📄 wcos1.asm
字号:
;COSCOR .INT 0e216H,2078H,0fd54H,1eH,0ffffH
;=================================
; ACC,ACCB,ACCBUF*2,BRCR,TREG0,TREG1=15 ,PUSH/POP used
;========================================================
WCOS1
SACB
;==============
LACC #15
SAMM TREG1
LACB
SACL ACCBUF
SQRA ACCBUF ;TREG0=a
PAC
SATL ;ACC>>15
BCND WCOS1_END1,EQ
SACL ACCBUF ;ACCBUF=((long)ax0*ax0)>>15; //1.15
SAMM TREG0 ;TREG0=ax0*ax0>>15
SACB ;ACCB=a*a
;------
LAMM AR0
;PUSH
SACL ACC_PUSH
;------
LACL #3
SAMM BRCR
LAR AR0,#COSCOR
MAR *,AR0
LACC #1,15 ;ACC=0X8000u
SBB ;acc=1-a*a
SACB
MPY *+
PAC
SATL
ADDB
SACB ;acc+=(accb*fccor[0]>>15);
;--------ax0=accb;
RPTB WCOS1_1-1
MPY ACCBUF
PAC
SATL
SAMM TREG0 ;pow(ax0,n)->TREG0, ACCBUF=(ax0*ax0)>>15
MPY *+
PAC
SATL
ADDB
SACB
WCOS1_1
;POP
LACC ACC_PUSH
SAMM AR0
;--------
LACB
RET
WCOS1_END1
RETD
LACC #7FFFH
;=====================
; accb=((long)ax0*ax0)>>15; //1.15
; if(accb==0) return 0x7fff;
; acc=0x8000u-accb; //acc=1-a*a
; acc+=(accb*fccor[0]>>15);
; ax0=accb;
; for(i=1;i<5;i++)
; { p32=(long)ax0*accb;
; p32>>=15; ax0=p32;
; p32=p32*fccor[i]; p32>>=15;
; acc+=p32; }
; a=(float)acc;
;=====================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -