??
字號:
;***************************************************;
; 中型浮點(diǎn)庫整理 1999-5-27 ;
;01.浮點(diǎn)數(shù)格式化 FSDT
;02.浮點(diǎn)數(shù)加法 FADD
;03.浮點(diǎn)數(shù)減法 FSUB
;04.浮點(diǎn)數(shù)乘法 FMUL
;05.浮點(diǎn)數(shù)除法 FDIV
;06.浮點(diǎn)數(shù)代數(shù)值比較(不影響待比較操作數(shù)) FCMP
;07.浮點(diǎn)絕對值函數(shù) FABS
;08.浮點(diǎn)倒數(shù)函數(shù) FRCP
;09.浮點(diǎn)數(shù)平方 FSQU
;10.浮點(diǎn)數(shù)開平方(快速逼近算法) FSQR
;11.雙字節(jié)十六進(jìn)制定點(diǎn)數(shù)轉(zhuǎn)換成格式化浮點(diǎn)數(shù) DTOF
;12.格式化浮點(diǎn)數(shù)轉(zhuǎn)換成雙字節(jié)定點(diǎn)數(shù) FTOD
;13.浮點(diǎn)BCD碼轉(zhuǎn)換成格式化浮點(diǎn)數(shù) BTOF
;14.格式化浮點(diǎn)數(shù)轉(zhuǎn)換成浮點(diǎn)BCD碼 FTOB
;****** [浮點(diǎn)數(shù)格式化] FSDT *********************;
;入口條件: 待格式化浮點(diǎn)操作數(shù)在[R0]中。
;出口信息: 已格式化浮點(diǎn)操作數(shù)仍在[R0]中。
;影響資源: PSW、A、R2、R3、R4、位1FH 堆棧需求: 6字節(jié)
;調(diào)用子程序: 3個(gè) MVR0 RLN MOV0
FSDT: ACALL MVR0 ;將待格式化操作數(shù)傳送到第一工作區(qū)中
ACALL RLN ;通過左規(guī)完成格式化
ACALL MOV0 ;通過左規(guī)完成格式化
RET
;------------------------------------------------;
;****** [浮點(diǎn)數(shù)加法] FADD ***********************;
;入口條件: 被加數(shù)在[R0]中,加數(shù)在[R1]中。
;出口信息: OV=0時(shí),和仍在[R0]中,OV=1時(shí),溢出。
;影響資源: PSW、A、B、R2~R7、位1EH、1FH 堆棧需求: 6字節(jié)
;調(diào)用子程序: 4個(gè)
FADD: CLR F0
ACALL AS ;計(jì)算代數(shù)和
RET
;------------------------------------------------;
;****** [浮點(diǎn)數(shù)減法] FSUB ***********************;
;入口條件: 被減數(shù)在[R0]中,減數(shù)在[R1]中。
;出口信息: OV=0時(shí),差仍在[R0]中,OV=1時(shí),溢出。
;影響資源: PSW、A、B、R2~R7、位1EH、1FH 堆棧需求:6字節(jié)
;調(diào)用子程序: 4個(gè)
FSUB: SETB F0
AS: ACALL MVR1
MOV C,F0
RRC A
XRL A,@R1
MOV C,ACC.7
ASN: MOV 1EH,C
XRL A,@R0
RLC A
MOV F0,C
ACALL MVR0
ACALL AS1
MOV0: INC R0
INC R0
MOV A,R4
MOV @R0,A
DEC R0
MOV A,R3
MOV @R0,A
DEC R0
MOV A,R2
MOV C,1FH
MOV ACC.7,C
MOV @R0,A
CLR ACC.7
CLR OV
CJNE A,#3FH,MV01
SETB OV
MV01: MOV A,@R0
RET
MVR0: MOV A,@R0
MOV C,ACC.7
MOV 1FH,C
MOV C,ACC.6
MOV ACC.7,C
MOV R2,A
INC R0
MOV A,@R0
MOV R3,A
INC R0
MOV A,@R0
MOV R4,A
DEC R0
DEC R0
RET
MVR1: MOV A,@R1
MOV C,ACC.7
MOV 1EH,C
MOV C,ACC.6
MOV ACC.7,C
MOV R5,A
INC R1
MOV A,@R1
MOV R6,A
INC R1
MOV A,@R1
MOV R7,A
DEC R1
DEC R1
RET
AS1: MOV A,R6
ORL A,R7
JZ AS2
MOV A,R3
ORL A,R4
JNZ EQ
MOV A,R6
MOV R3,A
MOV A,R7
MOV R4,A
MOV A,R5
MOV R2,A
MOV C,1EH
MOV 1FH,C
AS2: RET
EQ: MOV A,R2
XRL A,R5
JZ AS4
JB ACC.7,EQ3
MOV A,R2
CLR C
SUBB A,R5
JC EQ4
EQ2: CLR C
MOV A,R6
RRC A
MOV R6,A
MOV A,R7
RRC A
MOV R7,A
INC R5
ORL A,R6
JNZ EQ
MOV A,R2
MOV R5,A
SJMP AS4
EQ3: MOV A,R2
JNB ACC.7,EQ2
EQ4: CLR C
ACALL RR1
ORL A,R3
JNZ EQ
MOV A,R5
MOV R2,A
AS4: JB F0,AS5
MOV A,R4
ADD A,R7
MOV R4,A
MOV A,R3
ADDC A,R6
MOV R3,A
JNC AS2
AJMP RR1
AS5: CLR C
MOV A,R4
SUBB A,R7
MOV B,A
MOV A,R3
SUBB A,R6
JC AS6
MOV R4,B
MOV R3,A
AJMP RLN
AS6: CPL 1FH
CLR C
MOV A,R7
SUBB A,R4
MOV R4,A
MOV A,R6
SUBB A,R3
MOV R3,A
RLN: MOV A,R3
ORL A,R4
JNZ RLN1
MOV R2,#0C1H
RET
RLN1: MOV A,R3
JB ACC.7,RLN2
CLR C
ACALL RL1
SJMP RLN
RLN2: CLR OV
RET
RL1: MOV A,R4
RLC A
MOV R4,A
MOV A,R3
RLC A
MOV R3,A
DEC R2
CJNE R2,#0C0H,RL1E
CLR A
MOV R3,A
MOV R4,A
MOV R2,#0C1H
RL1E: CLR OV
RET
RR1: MOV A,R3
RRC A
MOV R3,A
MOV A,R4
RRC A
MOV R4,A
INC R2
CLR OV
CJNE R2,#40H,RR1E
MOV R2,#3FH
SETB OV
RR1E: RET
;------------------------------------------------;
;****** [浮點(diǎn)數(shù)乘法] FMUL ***********************;
;入口條件: 被乘數(shù)在[R0]中,乘數(shù)在[R1]中。
;出口信息: OV=0時(shí),積仍在[R0]中,OV=1時(shí),溢出。
;影響資源: PSW、A、B、R2~R7、位1EH、1FH 堆棧需求:6字節(jié)
;調(diào)用子程序: 3個(gè)
FMUL: ACALL MVR0
MOV A,@R0
XRL A,@R1
RLC A
MOV 1FH,C
ACALL MUL0
AJMP MOV0
MUL0: ACALL MVR1
MUL1: MOV A,R3
ORL A,R4
JZ MUL6
MOV A,R6
ORL A,R7
JZ MUL5
MOV A,R7
MOV B,R4
MUL AB
MOV A,B
XCH A,R7
MOV B,R3
MUL AB
ADD A,R7
MOV R7,A
CLR A
ADDC A,B
XCH A,R4
MOV B,R6
MUL AB
ADD A,R7
MOV R7,A
MOV A,B
ADDC A,R4
MOV R4,A
CLR A
RLC A
XCH A,R3
MOV B,R6
MUL AB
ADD A,R4
MOV R4,A
MOV A,B
ADDC A,R3
MOV R3,A
JB ACC.7,MUL2
MOV A,R7
RLC A
MOV R7,A
ACALL RL1
MUL2: MOV A,R7
JNB ACC.7,MUL3
INC R4
MOV A,R4
JNZ MUL3
INC R3
MOV A,R3
JNZ MUL3
MOV R3,#80H
INC R2
MUL3: MOV A,R2
ADD A,R5
MD: MOV R2,A
JB ACC.7,MUL4
JNB ACC.6,MUL6
MOV R2,#3FH
SETB OV
RET
MUL4: JB ACC.6,MUL6
MUL5: CLR A
MOV R3,A
MOV R4,A
MOV R2,#41H
MUL6: CLR OV
RET
;------------------------------------------------;
;****** [浮點(diǎn)數(shù)除法] FDIV ***********************;
;入口條件: 被除數(shù)在[R0]中,除數(shù)在[R1]中。
;出口信息: OV=0時(shí),商仍在[R0]中,OV=1時(shí),溢出。
;影響資源: PSW、A、B、R2~R7、位1EH、1FH 堆棧需求: 5字節(jié)
;調(diào)用子程序: 2個(gè)
FDIV: INC R0
MOV A,@R0
INC R0
ORL A,@R0
DEC R0
DEC R0
JNZ DIV1
MOV @R0,#41H
CLR OV
RET
DIV1: INC R1
MOV A,@R1
INC R1
ORL A,@R1
DEC R1
DEC R1
JNZ DIV2
SETB OV
RET
DIV2: ACALL MVR0
MOV A,@R0
XRL A,@R1
RLC A
MOV 1FH,C
ACALL MVR1
ACALL DIV3
AJMP MOV0
DIV3: CLR C
MOV A,R4
SUBB A,R7
MOV A,R3
SUBB A,R6
JC DIV4
ACALL RR1
SJMP DIV3
DIV4: CLR A
XCH A,R0
PUSH ACC
CLR A
XCH A,R1
PUSH ACC
MOV A,R2
PUSH ACC
MOV B,#10H
DIV5: CLR C
MOV A,R1
RLC A
MOV R1,A
MOV A,R0
RLC A
MOV R0,A
MOV A,R4
RLC A
MOV R4,A
XCH A,R3
RLC A
XCH A,R3
MOV F0,C
CLR C
SUBB A,R7
MOV R2,A
MOV A,R3
SUBB A,R6
ANL C,/F0
JC DIV6
MOV R3,A
MOV A,R2
MOV R4,A
INC R1
DIV6: DJNZ B,DIV5
MOV A,R6
CLR C
RRC A
SUBB A,R3
CLR A
ADDC A,R1
MOV R4,A
CLR A
ADDC A,R0
MOV R3,A
POP ACC
MOV R2,A
POP ACC
MOV R1,A
POP ACC
MOV R0,A
MOV A,R2
CLR C
SUBB A,R5
ACALL MD
ACALL RLN
RET
; 以上是小型浮點(diǎn)庫 可單獨(dú)使用 ;
;------------------------------------------------;
; 以下是中型浮點(diǎn)庫 可單獨(dú)使用 ;
;****** [浮點(diǎn)數(shù)代數(shù)值比較(不影響待比較操作數(shù))] FCMP ;
;入口條件: 待比較操作數(shù)分別在[R0]和[R1]中。
;出口信息: 若CY=1,則[R0] < [R1],若CY=0且A=0則 [R0] = [R1],否則[R0] > [R1]。
;影響資源: A、B、PSW 堆棧需求: 2字節(jié)
;調(diào)用子程序: 無
FCMP: MOV A,@R0
XRL A,@R1
JNB ACC.7,CMP2
MOV A,@R0
RLC A
MOV A,#0FFH
RET
CMP2: MOV A,@R1
MOV C,ACC.6
MOV ACC.7,C
MOV B,A
MOV A,@R0
MOV C,ACC.7
MOV F0,C
MOV C,ACC.6
MOV ACC.7,C
CLR C
SUBB A,B
JZ CMP6
RLC A
JNB F0,CMP5
CPL C
CMP5: MOV A,#0FFH
RET
CMP6: INC R0
INC R0
INC R1
INC R1
CLR C
MOV A,@R0
SUBB A,@R1
MOV B,A
DEC R0
DEC R1
MOV A,@R0
SUBB A,@R1
DEC R0
DEC R1
ORL A,B
JZ CMP7
JNB F0,CMP7
CPL C
CMP7: RET
;------------------------------------------------;
;****** [浮點(diǎn)絕對值函數(shù)] FABS *******************;
;入口條件: 操作數(shù)在[R0]中。
;出口信息: 結(jié)果仍在[R0]中。
;影響資源: A 堆棧需求: 2字節(jié)
;調(diào)用子程序: 無
FABS: MOV A,@R0
CLR ACC.7
MOV @R0,A
RET
;------------------------------------------------;
;****** [浮點(diǎn)倒數(shù)函數(shù)] FRCP *********************;
;入口條件: 操作數(shù)在[R0]中。
;出口信息: OV=0時(shí),結(jié)果仍在[R0]中,OV=1時(shí),溢出。
;影響資源: PSW、A、B、R2~R7、位1EH、1FH 堆棧需求: 5字節(jié)
;調(diào)用子程序: 2個(gè)
FRCP: MOV A,@R0
MOV C,ACC.7
MOV 1FH,C
MOV C,ACC.6
MOV ACC.7,C
MOV R5,A
INC R0
MOV A,@R0
MOV R6,A
INC R0
MOV A,@R0
MOV R7,A
DEC R0
DEC R0
ORL A,R6
JNZ RCP
SETB OV
RET
RCP: MOV A,R6
JB ACC.7,RCP2
CLR C
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -