📄 wcos627.asm
字号:
;=================================
; ACC ,ACCB ,SIGNFLAG,PUSH/POP used,
;=================================
WCOS627
;LDP #STATUS
;SST #0,STATUS
;SST #1,STATUS+1
ABS
SACB
LACL #0
SACL SIGNFLAG
LACC #1,15 ;ACC=0X8000
SFL
SFL ;accb=4l*0x8000l;
EXAR
WCOS627_1
SBB ;while(acc>accb) acc-=accb; //>2*pi
BCND WCOS627_1,GT
ADDB
EXAR
SFR
EXAR ;accb=2l*0x8000l;
SBB
BCND WCOS627_2,GT
;========;if(acc>(accb>>1)) {signflag=!signflag; acc=acc-(accb>>1); }//>pi
ADDB
B WCOS627_3
WCOS627_2
;PUSH
SACL ACC_PUSH
LACC SIGNFLAG
CMPL
SACL SIGNFLAG
;POP
LACC ACC_PUSH
WCOS627_3
EXAR
SFR
EXAR ;accb=0x8000l;
SBB
BCND WCOS627_4,GT
;========;if(acc>0x8000u) {signflag=!signflag; acc=(accb>>1)-acc; }//>pi/2
ADDB
B WCOS627_5
WCOS627_4
ADDB
SBB
SBB
NEG
;PUSH
SACL ACC_PUSH
LACC SIGNFLAG
CMPL
SACL SIGNFLAG
;POP
LACC ACC_PUSH
WCOS627_5
; if(acc==0x8000u) ta=0;
; else if(acc==0) ta=0x7fff;
; else ta=wcos_1(acc);
BCND WCOS627_END1,EQ
SBB
BCND WCOS627_END2,EQ
ADDB
CALL WCOS1
;PUSH
SACL ACC_PUSH
LACC SIGNFLAG
BCND WCOS627_6,NEQ
;POP
LACC ACC_PUSH
RET
WCOS627_6
;POP
LACC ACC_PUSH
NEG
RET
WCOS627_END1
LACC SIGNFLAG
BCND WCOS627_END1_1,NEQ
LACC #7FFFH
RET
WCOS627_END1_1
LACC #8000H
RET
WCOS627_END2
LACL #0
RET
;==================================
; ta=fabs(a);
; acc=ta*0x8000l;
; accb=4l*0x8000l;
; while(acc>accb) acc-=accb; //>2*pi
; if(acc>(accb>>1)) {signflag=!signflag; acc=acc-(accb>>1); }//>pi
; if(acc>0x8000u) {signflag=!signflag; acc=(accb>>1)-acc; }//>pi/2
; if(acc==0x8000u) ta=0;
; else if(acc==0) ta=0x7fff;
; else ta=wcos_1(acc);
; if(signflag) ta=-ta;
; return ta;
;=================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -