📄 mfxbs.asm
字号:
NAME SDTSUBMK
;
SDTSUBMK_CODE SEGMENT CODE
;应用子程序
PUBLIC FADD,FSUB,FMUL,FDIV,FLNX,FWTN,FNTW,WTN,NTW,CLWRAM
PUBLIC FEXP,PWTN,FTW,FSIN,FATN
PUBLIC FSQR,FSTR,FPLN,FBTD,INTF,FINT,BLC4,FAD4,FSD4
PUBLIC NTN,FNTN,ULWJ
RSEG SDTSUBMK_CODE
FNTN: MOV A,@R0
MOV @R1,A
INC R1
INC R0
MOV A,@R0
MOV @R1,A
INC R0
INC R1
MOV A,@R0
MOV @R1,A
RET
ULWA: MOV A,41H
ADD A,43H
MOV 41H,A
MOV A,40H
ADDC A,42H
MOV 40H,A
RET
ULQF: MOV A,40H
CPL A
MOV 40H,A
MOV A,41H
CPL A
ADD A,#1
MOV 41H,A
MOV A,40H
ADDC A,#0
MOV 40H,A
RET
ULWJ:MOV A,41H
CLR C
SUBB A,43H
MOV 41H,A
MOV A,40H
SUBB A,42H
MOV 40H,A
JC YSCX4
RET
YSCX4: MOV 40H,#0
MOV 41H,#0
;JNC NF12
;RLC A
;JNC NF12
;MOV 42H,40H
;MOV 40H,42H
;MOV 43H,41H
;LCALL ULQB
;MOV 40H,42H
;MOV 41H,43H
;SETB C
;NF12:MOV 42H,40H
;MOV 43H,41H
RET
ULQB:NOP
MOV A,43H
CPL A
ADD A,#1
MOV 43H,A
MOV A,42H
CPL A
ADDC A,#0
MOV 42H,A
RET
NTN: MOV A,@R0
MOV @R1,A
INC R1
INC R0
MOV A,R1
CJNE A,B,NTN
RET
FWTN: MOVX A,@DPTR
MOV @R0,A
INC R0
INC DPTR
MOVX A,@DPTR
MOV @R0,A
INC R0
INC DPTR
MOVX A,@DPTR
MOV @R0,A
RET
FNTW: MOV A,@R0
MOVX @DPTR,A
INC DPTR
INC R0
MOV A,@R0
MOVX @DPTR,A
INC DPTR
INC R0
MOV A,@R0
MOVX @DPTR,A
RET
WTN: MOVX A,@DPTR
MOV @R0,A
INC DPTR
INC R0
MOV A,R0
CJNE A,B,WTN
RET
NTW: MOV A,@R0
MOVX @DPTR,A
INC DPTR
INC R0
MOV A,R0
CJNE A,B,NTW
RET
PWTN: MOV A,B
MOVC A,@A+DPTR
MOV @R0,A
INC B
INC R0
MOV A,B
MOVC A,@A+DPTR
MOV @R0,A
INC B
INC R0
MOV A,B
MOVC A,@A+DPTR
MOV @R0,A
INC B
RET
;
FTW: MOV A,R4
MOVX @DPTR,A
INC DPTR
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R3
MOVX @DPTR,A
RET
CLWRAM: CLR A
MOVX @DPTR,A
INC DPTR
DJNZ R0,CLWRAM
RET
DMUL: MOV A,R3
MOV B,R5
MUL AB
MOV R7,B
MOV A,R3
MOV B,R4
MUL AB
ADD A,R7
MOV R7,A
CLR A
ADDC A,B
MOV R3,A
MOV A,R2
MOV B,R5
MUL AB
ADD A,R7
MOV R7,A
MOV A,R3
ADDC A,B
MOV R3,A
MOV 0D5H,C
MOV A,R2
MOV B,R4
MUL AB
ADD A,R3
MOV R3,A
CLR A
ADDC A,B
MOV C,0D5H
ADDC A,#00H
MOV R2,A
RET
DDIV: MOV A,R1
PUSH ACC
MOV B,#10H
S003: CLR C
MOV A,R6
RLC A
MOV R6,A
MOV A,R7
RLC A
MOV R7,A
MOV A,R3
RLC A
MOV R3,A
XCH A,R2
RLC A
XCH A,R2
MOV 0D5H,C
CLR C
SUBB A,R5
MOV R1,A
MOV A,R2
SUBB A,R4
JB 0D5H,S001
JC S002
S001: MOV R2,A
MOV A,R1
MOV R3,A
INC R6
S002: DJNZ B,S003
POP ACC
MOV R1,A
MOV A,R7
MOV R2,A
MOV A,R6
MOV R3,A
RET
FMLD: MOV A,@R0
MOV R6,A
INC R0
MOV A,@R0
MOV R2,A
INC R0
MOV A,@R0
MOV R3,A
DEC R0
DEC R0
MOV A,@R1
MOV R7,A
INC R1
MOV A,@R1
MOV R4,A
INC R1
MOV A,@R1
MOV R5,A
DEC R1
DEC R1
RET
FABP: MOV A,R6
MOV C,0E7H
MOV 38H,C
XRL A,R7
JNB 0E7H,S004
CPL 3AH
S004: MOV A,R6
MOV C,0E6H
MOV 0E7H,C
MOV R6,A
MOV A,R7
MOV C,0E6H
MOV 0E7H,C
MOV R7,A
CLR C
MOV A,R6
SUBB A,R7
JZ S005
CLR 0D5H
CLR 39H
JB 0E7H,S006
CJNE R4,#00H,S007
CJNE R5,#00H,S007
S005: JB 3AH,S008
MOV A,R3
ADD A,R5
MOV R3,A
MOV A,R2
ADDC A,R4
MOV R2,A
JNC S009
SETB 39H
CLR C
S012: CLR 0D5H
LCALL FSDT
S009: CJNE R2,#00H,S010
CJNE R3,#00H,S010
MOV R4,#41H
RET
S010: MOV A,R6
MOV C,38H
MOV 0E7H,C
XCH A,R4
MOV R6,A
RET
S006: CJNE R2,#00H,S011
CJNE R3,#00H,S011
MOV A,R7
MOV R6,A
SJMP S005
S007: CPL 0D5H
S011: CLR C
LCALL FSDT
SJMP S004
S008: MOV A,R3
CLR C
SUBB A,R5
MOV R3,A
MOV A,R2
SUBB A,R4
MOV R2,A
JNC S013
CLR A
CLR C
SUBB A,R3
MOV R3,A
CLR A
SUBB A,R2
MOV R2,A
CPL 38H
S013: SETB C
SJMP S012
FADD: CLR 3AH
LCALL FMLD
LCALL FABP
RET
FSUB: SETB 3AH
LCALL FMLD
LCALL FABP
RET
FMUL: LCALL FMLD
MOV A,R6
XRL A,R7
MOV C,0E7H
MOV 38H,C
LCALL DMUL
MOV A,R7
MOV C,0E7H
MOV 0D5H,C
MOV A,@R0
ADD A,@R1
MOV R6,A
SETB C
LCALL FSDT
MOV A,R6
MOV C,38H
MOV 0E7H,C
MOV R4,A
RET
FDIV: LCALL FMLD
MOV A,R6
XRL A,R7
MOV C,0E7H
MOV 38H,C
CLR A
MOV R6,A
MOV R7,A
CJNE R4,#00H,S014
CJNE R5,#00H,S014
SETB C
RET
S014: MOV A,R3
SUBB A,R5
MOV A,R2
SUBB A,R4
JC S015
CLR 0D5H
CLR 39H
LCALL FSDT
MOV A,R7
RRC A
MOV R7,A
CLR C
SJMP S014
S015: CLR A
XCH A,R6
PUSH ACC
LCALL DDIV
POP ACC
ADD A,@R0
CLR C
SUBB A,@R1
MOV C,38H
MOV 0E7H,C
MOV R4,A
CLR C
;
MOV A,R2
ORL A,R3
JNZ FDIV0
MOV R4,#41H
;
FDIV0: RET
; 结果回送子程序,把R4R2R3结果送到(R1)指定的地址
FSTR: MOV A,R4
MOV @R1,A
INC R1
MOV A,R2
MOV @R1,A
INC R1
MOV A,R3
MOV @R1,A
DEC R1
DEC R1
RET
;开方子程序,把(R0)指定的数开方后送到(R1)指定的单元
FSQR: MOV A,@R0
JB 0E7H,S016
MOV @R1,A
INC R0
INC R1
MOV A,@R0
MOV @R1,A
INC R0
INC R1
MOV A,@R0
MOV @R1,A
DEC R0
DEC R0
DEC R1
DEC R1
S018: LCALL FDIV
MOV R6,A
MOV A,@R1
MOV R7,A
INC R1
MOV A,@R1
MOV R4,A
INC R1
MOV A,@R1
MOV R5,A
DEC R1
DEC R1
CLR 3AH
LCALL FABP
CLR 0D5H
MOV A,R4
DEC A
CLR 0E7H
MOV R4,A
MOV B,R7
CLR 0F7H
CJNE A,B,S017
MOV A,R5
SUBB A,R3
ANL A,#0FCH
MOV R7,A
MOV A,R6
SUBB A,R2
JNZ S017
CJNE R7,#00H,S017
SETB 0D5H
S017: LCALL FSTR
JNB 0D5H,S018
RET
S016: CLR 0D5H
RET
;二翻十子程序
FBTD: MOV A,@R0
MOV C,0E7H
MOV 3CH,C
MOV C,0E6H
MOV 0E7H,C
MOV R6,A
INC R0
MOV A,@R0
MOV R2,A
INC R0
MOV A,@R0
MOV R3,A
DEC R0
DEC R0
CJNE R2,#00H,S019
CJNE R3,#00H,S019
CLR A
MOV @R1,A
INC R1
MOV @R1,A
INC R1
MOV @R1,A
INC R1
MOV @R1,A
INC R1
MOV @R1,A
INC R1
MOV @R1,A
S031: DEC R1
DEC R1
DEC R1
DEC R1
DEC R1
RET
S019: MOV @R1,#00H
JB 3EH,S020
DEC @R1
S020: INC R1
MOV @R1,#01H
JNB 3EH,S021
INC @R1
JNB 3FH,S021
INC @R1
S021: MOV A,R6
CLR C
SUBB A,@R1
JZ S022
JNB 0E6H,S023
S032: DEC @R1
DEC @R1
DEC @R1
DEC @R1
S034: MOV A,R6
CLR C
SUBB A,@R1
JZ S024
JB 0E6H,S025
S035: JNB 3EH,S026
DEC R6
JNB 3FH,S026
DEC R6
S026: CJNE R6,#00H,S027
MOV R6,#05H
JNB 3EH,S028
MOV R7,#01H
JNB 3FH,S029
INC R7
S029: CLR A
CLR C
S030: XCH A,R3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -