📄 fp98.asm
字号:
;FPAD/FPSUB/FPDI/FPMU/FPDI/FPDI2/DP/FPSQ/FSQR/CMPR/DTOB/BTOD ONLY!
ORG 2000H ;NEW! LNX &EXP REFINED
;2fh,7:div/mul flag/6:div'(d/c)>=1 /5:fpsqr'num.flag/4:br sub'num.flag/3:or gint'num/arccosx flag
;/2:fpln'x2 flag/1:arcsinx'|x|>0.5/0:exp(x),sinx,dtob,arcsinx'x flag
CMPR: JBS 27H,7,CMX ;3Q4n<FX1;P4n<FX2$q8{$j$p$l5{'G
JBC 2BH,7,CPP
CPM: CMP 2AH,26H ;(b<F2'89,%u$q8{'@<F0*&l&r
RET
CMX: JBC 2BH,7,CPM ;%g(b<F2'89
CMPB 2CH,2DH ;-t<F;P-t<F$q8{,6%$j*L-H$p
JNE CP4
CMP 2AH,26H ;6%,[5%.I,'@<F549o-H$j*L-H$p
JNE CP4
CMP 28H,24H ;0*&l&r,[5%,$q8{'C&l&r
SJMP CP3
CPP: CMPB 2DH,2CH ;%?<F;P%?<F$q8{,6%$j*L-H$j
JNE CP4
CMP 26H,2AH ;6%,[5%.I,'@<F549o-H$j*L-H$]$j
JNE CP4
CMP 24H,28H
CP3: JNE CP4 ;6%=X)M'@<F9o@3,[5%,(b<F$~,[5%
CLR C ;(C2M0#C
CP4: RET ;*p&^&Z,Z=1,(b<F,[5%,'_+hCY=1.IX1>X2,CY=0.IX1<X2
FPSU: XORB 2BH,#80H ;/BBI4n*k$l5{'G,4n<F(D-t,0%[<F
FPAD: CMPB 2DH,0 ;/BBI%[*k$l5{'G
JE COM ;3Q%[<F5%$_9s,%[<F,0)M
LDB 31H,27H
CMPB 2CH,0
JE PCOM1 ;%[<F,09s,3Q%[<F,0)M
LDB 32H,2BH
ORB 27H,#80H
ORB 2BH,#80H ;+l4_'@<F3L0*&l
SUBB 30H,2DH,2CH ;6%=X$'.t
JC NN2
NEGB 30H ;.t,0-t,(D8I
CMPB 30H,#20H
JH DON ;|.t|>32,%[<F,0)M
SHRL 24H,30H ;9o6%,%k2>3Q%[<F'@<F
ADDC 24H,0
ADDC 26H,0 ;2>%X3!$@%|*Y$-$J
SJMP GOON
NN2: CMPB 30H,#20H
JH PCOM1 ;6%.t>32,3Q%[<F,0)M
SHRL 28H,30H ;9o6%,%k2>%[<F'@<F
ADDC 28H,0
ADDC 2AH,0 ;2>%X3!$@%|*Y$-$J
LDB 2CH,2DH ;3Q%[<F6%=X,0)M$'6%=X
GOON: XORB 31H,32H
JBC 31H,7,SAMS ;(b<F&P89,
SUB 28H,24H
SUBC 2AH,26H ;2'89,,[4n,%[<F,03Q4n<F
JE DON0 ;'@<F,[5%,(z9s6%
JC PDIF ;0w4n,B`
XORB 32H,#80H ;$#0w4n,3Q4n<F2E89(D$O,0.t$'2E89
NOT 2AH
NEG 28H
ADDC 2AH,0 ;.t(D8I(C%|*Y$-$J
PDIF: NORML 28H,30H
SUBB 2CH,30H ;.t3W.f$F
JNH OV1 ;9s6%$N-t6%,078%X
SJMP DON ;$w3W.f$F
SAMS: ADD 28H,24H
ADDC 2AH,26H ;&P89,'@<F,[%[
JNC DON ;CY=0,$w3W.f$F
SHRL 28H,#1
ORB 2BH,#80H
INC 2CH ;'_+h,%k3W$@&8
JNE DON ;6%=X$#5%$_9s,$w3W.f$F
OV1: RST ;'_+h,078%X,3y&(3n%s4_&l
RST ;&p$#7Q4_&l,%i%NLJMP+|%O$^>I3B2z78%X($U&P)
RST
PCOM1: LDB 32H,31H
LDB 2CH,2DH
LD 28H,24H
LD 2AH,26H ;(z3Q%[<F,0)M
DON: JBS 32H,7,COM ;0t8m<F2E
ANDB 2BH,#7FH
COM: RET
DON0: CLRB 2CH ;9s6%
RET
FPMU: CMPB 2DH,#0 ;/BBI-<*k$l5{'G,'@<F,[-<(a+b)*(c+d)-->ac+ad+bc+bd
JE GET0
CMPB 2CH,#0
JNE M1
GET0: CLRB 2CH ;&3$@-<<F,09s,?n,09s
CLR 2AH
CLR 28H
RET
M1: ANDB 2FH,#3FH ;(3B2z?n2E?n6%)%}2M0#<P'S&l
LDB 30H,27H
XORB 30H,2BH ;?n$'<F2E
ANDB 30H,#80H
ORB 2FH,30H ;&s$_2FH3L0*&l
ADDB 2CH,2DH ;2>=X(D)M
JNC FM1
ADDB 2CH,#80H ;&36i&l,)M&A%[$W80H,1o?n/0S$'6%=X
SJMP MUL1
FM1: SUBB 2CH,#80H ;5L6i&l,1N)M4n%h80H,1o?n/0S$'6%=X[9oz/ov<vETIO$W$#&P]
MUL1: JE OV2
JV OV2 ;'PB_78%X
ORB 27H,#80H
FPMU1: ORB 2BH,#80H ;+l4_'@<F3L0*&l
MULU 30H,24H,2AH ;-<?n bc
MULU 20H,26H,28H ;-<?n ad
ADD 30H,20H
ADDC 32H,22H ;bc+ad
MULU 20H,24H,28H ;-<?n bd
MULU 28H,26H,2AH ;-<?n ac
ADDC 2AH,0 ;(bc+ad) 2#%MCY,%[$J?n$$
ADD 30H,22H
ADDC 28H,32H ;bd $'0*&l&r%[$J(ad+bc)
ADDC 2AH,0 ;(ad+bc)%[$J?n$$,?n&b2AH(0*&l),28H,30H$T-S&r$$
M2: JBS 2BH,7,NXA
ADD 30H,30H ;?n(0S)3L0*&l,09s,1N?n%*2>$@&l
ADDC 28H,28H
ADDC 2AH,2AH
JBC 31H,7,NXB ;:I%h3!$@%|*Y$-$J
INC 28H
ADDC 2AH,0
JNC NXB
LDB 2BH,#80H ;=U>c
SJMP COM1
NXB: DJNZ 2CH,COM1 ;6%=X4n$@E\,09s,078%X
OV2; RST ;4_&l
RST
RST
NXA: JBC 31H,7,COM1
INC 28H ;%|*Y$-$J
ADDC 2AH,0
COM1: JBS 2FH,7,COMR ;0t8m<F2E
ANDB 2BH,#7FH
COMR: RET
;/BBI0#*k$l5{'G '@<F,[0#(a+b)/(c+d)->(a+b)/c*[1-d/c+(d/c)*(d/c)]
FPDI: CMPB 2CH,#0; ;-->(a+b)/c-(a+b)/c*(d/c)+(a+b)/c*(d/c)*(d/c)
JE OV3 ;0#<F,09s,78%X
CMPB 2DH,#0
JNE D2
LJMP G0 ;3Q0#<F,09s,0S5%$_9s
OV3: RST
RST
RST
D2: ANDB 2FH,#3FH ;(3B2z0S2E0S6%)%}2M0#<P'S&l
LDB 30H,27H
XORB 30H,2BH ;0S$'<F2E
ANDB 30H,#80H
ORB 2FH,30H ;&s$_2FH3L0*&l
SUBB 2CH,2DH,2CH ;2>=X(D.t
JNC DIV2
ADDB 2CH,#80H ;&36i&l,)M&A%[$W80H,1o?n/0S$'6%=X
SJMP DIV3
DIV2: SUBB 2CH,#80H ;5L6i&l,1N)M4n%h80H,1o?n/0S$'6%=X[9oz/ov<vETIO$W$#&P]
DIV3: JE OV3
JV OV3 ;'PB_78%X
ORB 27H,#80H
ORB 2BH,#80H ;+l4_'@<F3L0*&l
FPD3: CMP 26H,2AH ;a$j$_5%$_c?
JNC D3
INC 2CH ;,O,0S6%%[$@
JE OV3 ;0S6%E\,09s,78%X
SUB 26H,2AH ;a-c-->a,(C&3CY=1
D3: DIVU 24H,2AH
LD 32H,24H ;(a+b)/c$'0*&l&r
LD 24H,0
DIVU 24H,2AH
LD 30H,24H ;(a+b)/c$''C&l&r
LD 24H,0
DIVU 24H,2AH
LD 20H,24H ;(a+b)/c$'BX.i&r
JNC D4
SHRL 30H,#1
SHR 20H,#1
JNST D6 ;%k2>0eY,
ORB 21H,#80H
D6: ORB 33H,#80H ;a$j$_5%$_c.I,(a+b)/c%k2>$@&l,At't"02>$J0S$'3L0*&l
D4: CMP 28H,0 ;d=0?
JE D13 ;d=0,'@<F0#*k9B:b$w'9&(
CLR 24H
LD 26H,28H
CMP 26H,2AH ;d$j$_5%$_c?(+v&r,]+])
JNC D7
SUB 26H,2AH ;,O,d-c-->26H
ORB 2FH,#40H ;<P;x
D7: DIVU 24H,2AH ;-p:bd/c)N(d-c)/c
SHL 26H,#1
JC D8 ;'E<F*2!Y0#<F?
CMP 26H,2AH ;%|*Y$-$J
JNC D9
D8: INC 24H
D9: LD 22H,30H
LD 26H,32H
MULU 28H,24H,26H
SUB 20H,28H
SUBC 30H,2AH
SUBC 32H,0
MULU 28H,24H,22H
SUB 20H,2AH
SUBC 30H,0
SUBC 32H,0 ;7md$p$_c.I,-p:b(a+b)/c-(a+b)/c*(d/c)
JBC 2FH,6,D10
SUB 20H,22H
SUBC 30H,26H
SUBC 32H,0 ;7md$j$_c.I,-p:b(a+b)/c-(a+b)/c*(1+(d-c)/c)
D10: SHR 24H,#1 ;(Dd/2c)N(d-c)/2c
JBC 2FH,6,D11
ORB 25H,#80H ;At't0S$'3L0*&l2>&^
D11: MULU 28H,24H,26H
ADD 28H,28H
ADDC 2AH,0 ;%|*Y$-$J
MULU 24H,2AH
SHRL 24H,#14 ;-p:b(a+b)/c*(d/c)*(d/c)
ADD 20H,24H
ADDC 30H,26H
ADDC 32H,0 ;-p:b(a+b)/c-(a+b)/c*d/c+(a+b)/c*(d/c)*(d/c)
D13: LD 2AH,32H ;&^0e0S'@<F
LD 28H,30H
LD 30H,20H
SJMP M2 ;B`'@<F3B2z,=U>c
;'V3t/BBI0#*k$l5{'G/28&l&3.D
FPDI2: CMPB 2CH,#0 ;'@<F,[0# (a+b)/(c+d)-->(a+b)/c-(a+b)/c*(d/c)
JE OV30 ;0#<F5%$_9s,78%X
CMPB 2DH,#0
JNE D22
SJMP G0
OV30: RST
RST
RST
D22: ANDB 2FH,#3FH ;(3B2z0S2E0S6%)%}2M0#<P'S&l
LDB 30H,27H
XORB 30H,2BH ;0S$'<F2E
ANDB 30H,#80H
ORB 2FH,30H ;&s$_2FH3L0*&l
SUBB 2CH,2DH,2CH ;2>=X(D.t
JNC DV22
ADDB 2CH,#80H ;&36i&l,)M&A%[$W80H,1o?n/0S$'6%=X
SJMP DV33
DV22: SUBB 2CH,#80H ;5L6i&l,1N)M4n%h80H,1o?n/0S$'6%=X[9oz/ov<vETIO$W$#&P]
DV33: JE OV30
JV OV30 ;'PB_78%X
ORB 27H,#80H
ORB 2BH,#80H ;+l=F'@<F3L0*&l
CMP 26H,2AH ;a$j$_5%$_c?
JNC D33 ;'_,B`
INC 2CH
JE OV30 ;78%X,B`
SUB 26H,2AH ;a-c-->26H
D33: DIVU 24H,2AH
LD 32H,24H ;(a+b)/c$'0*&l&r
LD 24H,0
DIVU 24H,2AH
LD 30H,24H ;(a+b)/c$''C&l&r
JNC D44
SHRL 30H,#1
ORB 33H,#80H ;At't0S$'3L0*&l2>&^
D44: CMP 28H,0 ;d=0?
JE D55
CLR 24H
LD 26H,28H
CMP 26H,2AH ;d$j$_5%$_c? (+v&r,]+])
JNC D66
SHRL 24H,#1 ;d$j$_5%$_c.I,(zd/2-->d
SET C ;(zd/2$'<P;x
D66: DIVU 24H,2AH ;d/c
MULU 24H,32H ;(a+b)/c$'0*&l&r-<%H(d/c)
JNC D77
SHLL 24H,#1 ;;Pd%k2>$@&l)h.x
SUBC 32H,0
D77: SUB 28H,30H,26H
LD 2AH,32H ;&^0e0S'@<F
SUBC 2AH,0 ;-p:b(a+b)/c-(a+b)/c*(d/c)
NORML 28H,2DH
SUBB 2CH,2DH ;3W.f$F >_,d
D99: JBS 2FH,7,D88 ;0t8m<F2E
ANDB 2BH,#7FH
D88: RET
D55: LD 2AH,32H
LD 28H,30H
SJMP D99
FPSQ: ANDB 2FH,#0DFH ;<R@@$b:b'V3t6}%-$h$l5{'G,%}+X9j<F<P;x
CMPB 2CH,#0
JE DON2 ;&p3Q6}%-$h<FX5%$_9s,+h.Z5%$_9s
ADDB 2BH,#80H ;4z8U<F2E
JNC SQ1
ORB 2FH,#20H ;5j<F<P;x
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -