|
| |
1、二进制定点数移位
FRCL:
CLR C
MOV A,R7
RLC A
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
MOV A,R3
RLC A
MOV R3,A
MOV A,R2
RLC A
MOV R2,A
RET |
| |
2、BCD码移位
BCDRL10:
MOV A,R7
MOV R2,A
ADD A,R0
MOV R0,A
MOV R3,#0
BCDRL1:
DEC R0
MOV A,@R0
SWAP A
MOV @R0,A
MOV A,R3
XCHD A,@R0
MOV R3,A
DJNZ R2,BCDRL1
RET |
| |
3、二进制定点数求补
CPL1:
MOV A,@R0
CPL A
ADD A,#1
MOV @R0,A
LOOP:
INC R0
MOV A,@R0
CPL A
ADDC A,#0
MOV #R0,A
DJNZ R3,LOOP
RET |
| |
4、BCD码求补
NGLP1:
MOV A,#99H
SUBB A,@R0
MOV @R0,A
DEC R0
DJNZ R1,NGLP1
INC R0
INC R0
INC R0
MOV R1,#3
SETB C
NGLP2:
CLR A
ADDC A,@R0
DA A
MOV @R0,A
DEC R0
DJNZ R1,NGLP2
BSBRT:
RET |
| |
5、二进制数左规
;1定点数规格化
FXDN:
LD 2CH,#40A0H
LOOP:
JBS 2BH,7,LOOP1
SHLL 24H,#1
ADDC 28H,28H
ADDC 2AH,2AH
DECB 2CH
DJNZ 2DH,LOOP
CLR 2CH;0
LOOP1:
RET
2定点数规格化实例
FLTRLN:
MOV A,R3
ORL A,R4
JNZ RLN1
MOV R2,#0C1H
RET
RLN1:
MOV A,R3
JB ACC.7,RLN2
CLR C
LCALL RL1
SJMP RLN
RLN2:
CLR OV
RET |
| |
6、二进制浮点数右规
FLTRRN:
MOV A,R3
ORL A,R4
JNZ RLN1
MOV R2,#0C1H
RET
RLN1:
MOV A,R3
JB ACC.7,RLN2
CLR C
LCALL RL1
SJMP RLN
RLN2:
CLR OV
RET
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 |
| |
7、双字节定点数转换成格式化浮点数
FXDTOFLT:
MOV R2,A
MOV A,@R0
MOV R3,A
INC R0
MOV A,@R0
MOV R4,A
DEC R0
FLTRLN:
MOV A,R3
ORL A,R4
JNZ RLN1
MOV R2,#0C1H
RET
RLN1:
MOV A,R3
JB ACC.7,RLN2
CLR C
LCALL RL1
SJMP FLTRLN
RLN2:
CLR OV
LJMP MOV0
RET |
| |
8、多字节二进制数转换为浮点数
FXMTOFLT:
MOV A,R7
MOV B,#08H
MUL AB
DEC A
INC R0
MOV @R0,A
NOM0:
DEC R0
MOV A,@R0
JNB ACC.7,LOOP1
JB ACC.6,LOOP4
LOOP0:
INC R0
RET
LOOP1:
JB ACC.6,LOOP0
INC R0
ACALL LOOP7
ACALL LOOP8
LOOP2:
JB ACC.6,LOOP0
INC R0
ACALL LOOP8
DJNZ R2,LOOP2
LOOP3:
INC R0
MOV @R0,#80H
RET
LOOP4:
ACALL LOOP7
LOOP5:
INC R0
ACALL LOOP8
DJNZ R2,LOOP6
AJMP LOOP3
LOOP6:
JB ACC.6,LOOP5
AJMP LOOP0
LOOP7:
MOV A,R7
MOV B,#80H
MUL AB
DEC A
MOV R2,A
RET
LOOP8:
MOV A,R7
MOV R6,A
MOV A,R0
CLR C
SUBB A,R7
MOV R0,A
CLR C
LOOP9:
MOV A,@R0
RLC A
MOV @R0,A
INC R0
DJNZ R6,LOOP9
DEC @R0
DEC R0
MOV A,@R0
RET |
| |
9、格式化浮点数转换成双字节定点数
FLTTOFXD:
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
MOV A,R2
JZ FTD4
JB ACC.7
SETB C
SUBB A,#10H
JC LOOP1
SETB OV
RET
LOOP1:
SETB C
MOV A,R2
SUBB A,#8
JC LOOP3
LOOP2:
MOV B,#10H
LCALL LOOP8
SETB F0
CLR C
CLR OV
RET
LOOP3:
MOV B,#8
LCALL LOOP8
SETB C
CLR F0
CLR OV
RET
LOOP4:
MOV B,#0
LCALL LOOP8
CLR OV
CLR F0
CLR C
RET
LOOP8:
MOV A,R2
CJNE A,B, LOOP9
MOV A,R3
MOV @R0,A
INC R0
MOV A,R4
MOV @R0,A
DEC R0
RET
LOOP9:
CLR C
LCALL FLTRRN
SJMP LOOP8 |
| |
10、32位整数转换为4字节规格化浮点数
DIV16F:
ACALL DIV16L
PUSH 7
PUSH 6
MOV R7,#0
MOV R6,#0
ACALL DIV16L
MOV 3,R7
MOV 7,R6
POP 5
POP 6
MOV R4,#90H
MOV R2,#32
DIV16L:
MOV A,R5
JB ACC.7,NMLDN
MOV A,R3
ADD A,R3
MOV R3,A
LCALL H0
DEC R4
DJNZ R2,DIV16L
MOV R4,#0
RET
NMLDN:
MOV A,R3
JNB ACC.7,DIVRT
LCALL INC3
MOV A,R5
JNZ DIVRT
INC R4
DIVRT:
ANL 5,#7FH
RET
DIV24:
CLR A
MOV B,#24;计数器
LXP:
LCALL SHIF
XCH A,R4
RLC A
XCH A,R4
RLC A
JNC LXP1
ACALL SUB2Y
SJMP DIV0
LXP1:
ACALL SUB2Y
JNC DIV0
XCH A,R4
ADD A,R3
XCH A,R4
ADDC A,R2
SJMP DIV1
DIV0:
INC R7
DIV1:
DJNZ B,LXP
XCH A,R4
CLR C
RLC A
XCH A,R4
RLC A
JC GIN
ACALL SUB2Y
JNC GIN
RET3:
MOV R4,#0
RET
GINC:
MOV R0,#7
INC3A:
INC @R0
CJNE @R0,#0,RET3
DEC R0
SJMP INC3A
SUB2Y:
CLR C
XCH A,R4
SUBB A,R3
XCH A,R4
SUBB A,R2
RET |
| |
11、多字节浮点数对阶
MBTEG:
MOV R2,#00H
LOOP0:
INC @R0
DEC R0
MOV A,R7
MOV R6,A
MOV A,@R0
MOV C,ACC. 7
LOOP1:
RRC A
MOV @R0,A
DEC R0
MOV A,@R0
DJNZ R6,LOOP1
MOV A,R2
RRC A
MOV R2,A
MOV A, R0
ADD A,R7
MOV R0,A
INC R0
DJNZ R3,LOOP0
MOV A,R2
JNB ACC. 7,LOOP3
CLR C
MOV A,R0
SUBB A,R7
MOV R0,A
MOV A,R7
MOV R6,A
SETB C
LOOP2:
MOV A,@R0
ADDC A,#00H
MOV @R0,A
INC R0
DJNZ R6,LOOP2
LOOP3:
RET |
|
12、多字节浮点数减法对阶
FLTSUB:
SETB F0
AS:
LCALL 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
LCALL MVR0
LCALL 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 EQ1
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
EQ1:
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 EQ1
MOV A,R2
MOV R5,A
SJMP AS4
EQ3:
MOV A,R2
JNB ACC.7,EQ2
EQ4:
CLR C
FLTRRN:
MOV A,R3
ORL A,R4
JNZ RLN1
MOV R2,#0C1H
RET
RLN1:
MOV A,R3
JB ACC.7,RLN2
CLR C
LCALL RL1
SJMP RLN
RLN2:
CLR OV
RET
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:
ORL A,R3
JNZ EQ1
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
LJMP FLTRRN
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
LJMP 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
LCALL 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 |
| |
| |
|
|