📄 wcos.asm
字号:
;=================================
; ACC ,ACCB ,SIGNFLAG,PUSH/POP used,
;=================================
WCOS
;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
WCOS_1
SBB ;while(acc>=accb) acc-=accb; //>2*pi
BCND WCOS_1,C
ADDB
EXAR
SFR
EXAR ;accb=2l*0x8000l;
SBB
;BCND WCOS_2,C
BCND WCOS_2,GT;!!!!!!!!!!!!!!!
;========;if(acc>=(accb>>1)) {signflag=!signflag; acc=acc-(accb>>1); }//>pi
ADDB
B WCOS_3
WCOS_2
;PUSH
SLAC ACC_PUSH
LACC SIGNFLAG
CMPL
SACL SIGNFLAG
;POP
LLAC ACC_PUSH
WCOS_3
EXAR
SFR
EXAR ;accb=0x8000l;
SBB
BCND WCOS_4,C
;BCND WCOS_4,GEQ;!!!!!!!!!!!!!
;========;if(acc>0x8000u) {signflag=!signflag; acc=(accb>>1)-acc; }//>pi/2
ADDB
B WCOS_5
WCOS_4
;BCND $,LT;!!!!!!!!!!!!!!!!!!!!
;ADDB
;SBB
SBB
NEG
;PUSH
SLAC ACC_PUSH
LACC SIGNFLAG
CMPL
SACL SIGNFLAG
;POP
LLAC ACC_PUSH
WCOS_5
; if(acc==0x8000u) ta=0;
; else if(acc==0) ta=0x7fff;
; else ta=wcos_1(acc);
BCND WCOS_END1,EQ
SBB
BCND WCOS_END2,EQ
ADDB
CALL WCOS1
;PUSH
SACL ACC_PUSH
LACC SIGNFLAG
BCND WCOS_6,NEQ
;POP
LACC ACC_PUSH
RET
WCOS_6
;POP
LACC ACC_PUSH
NEG
RET
WCOS_END1
LACC SIGNFLAG
BCND WCOS_END1_1,NEQ
LACC #7FFFH
RET
WCOS_END1_1
LACC #8000H
RET
WCOS_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 + -