⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 f51small.asm

📁 C51单片机实用程序
💻 ASM
字号:
;////////////////////////////////////////////////////////////////////
;/  (0)  BTOF	;转换成二进制浮点操作数
;/
;/  (1)  FMUL	;进行浮点乘法运算
;/
;/  (2)  FDIV	;进行浮点除法运算
;/
;/  (3)  FADD	;进行浮点加法运算
;/
;/  (4)  FSUB	;进行浮点减法运算
;/
;/  (5)  FTOB	;将结果转换成BCD码浮点数
;////////////////////////////////////////////////////////////////////

	ORG	0000H
	LJMP	MAIN
	ORG	0030H
MAIN:	MOV	30H,#00H	;a=-123.4
	MOV	31H,#01H
	MOV	32H,#61H
	;MOV	33H,#00H	;b=0.7577
	;MOV	34H,#75H
	;MOV	35H,#77H
	MOV	36H,#00H	;c=56.34
	MOV	37H,#01H
	MOV	38H,#00H
	;MOV	39H,#01H	;d=1.276
	;MOV	3AH,#12H
	;MOV	3BH,#76H
	lcall test
STOP:	LJMP	STOP

TEST: ;	MOV  	R0,#39H		;指向BCD码浮点操作数d
;	LCALL	BTOF		;将其转换成二进制浮点操作数
	MOV  	R0,#36H		;指向BCD码浮点操作数c
	LCALL	BTOF		;将其转换成二进制浮点操作数
;	MOV  	R0,#33H		;指向BCD码浮点操作数b
;	LCALL	BTOF		;将其转换成二进制浮点操作数
	MOV  	R0,#30H		;指向BCD码浮点操作数a
	LCALL	BTOF		;将其转换成二进制浮点操作数
	MOV  	R1,#36H		;指向二进制浮点操作数c
        mov   r0,#30H
        LCALL	FDIv	;进行浮点除法运算

        LCALL   FTOB
        RET
FSDT:	LCALL	MVR0
	LCALL	RLN
	LJMP	MOV0
FADD:	CLR	F0
	SJMP	AS
FSUB:	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
	LCALL	RR1
	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	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
	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
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
FMUL:	LCALL	MVR0
	MOV	A,@R0
	XRL	A,@R1
	RLC	A
	MOV	1FH,C
	LCALL	MUL0
	LJMP	MOV0
MUL0:	LCALL	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
	LCALL	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
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:	LCALL	MVR0
	MOV	A,@R0
	XRL	A,@R1
	RLC	A
	MOV	1FH,C
	LCALL	MVR1
	LCALL	DIV3
	LJMP	MOV0
DIV3:	CLR	C
	MOV	A,R4
	SUBB	A,R7
	MOV	A,R3
	SUBB	A,R6
	JC	DIV4
	LCALL	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
	LCALL	MD
	LJMP	RLN

;/////////////////////////////////////////////////////////////////////
BTOF:	INC	R0
	INC	R0
	MOV	A,@R0
	MOV	R7,A
	DEC	R0
	MOV	A,@R0
	MOV	R6,A
	DEC	R0
	ORL	A,R7
	JNZ	BTF0
	MOV	@R0,#41H
	RET
BTF0:	MOV	A,@R0
	MOV	C,ACC.7
	MOV	1DH,C
	CLR	1FH
	MOV	C,ACC.6
	MOV	ACC.7,C
	MOV	@R0,A
	JNC	BTF1
	ADD	A,#19
	JC	BTF2
	MOV	@R0,#41H
	INC	R0
	MOV	@R0,#0
	INC	R0
	MOV	@R0,#0
	DEC	R0
	DEC	R0
	RET
BTF1:	SUBB	A,#19
	JC	BTF2
	MOV	A,#3FH
	MOV	C,1DH
	MOV	ACC.7,C
	MOV	@R0,A
	INC	R0
	MOV	@R0,#0FFH
	INC	R0
	MOV	@R0,#0FFH
	DEC	R0
	DEC	R0
	RET
BTF2:	CLR	A
	MOV	R4,A
	MOV	R3,A
	MOV	R2,#10H
BTF3:	MOV	A,R7
	ADD	A,R7
	DA	A
	MOV	R7,A
	MOV	A,R6
	ADDC	A,R6
	DA	A
	MOV	R6,A
	MOV	A,R4
	RLC	A
	MOV	R4,A
	MOV	A,R3
	RLC	A
	MOV	R3,A
	DEC	R2
	JNB	ACC.7,BTF3
	MOV	A,R6
	ADD	A,#0B0H
	CLR	A
	ADDC	A,R4
	MOV	R4,A
	CLR	A
	ADDC	A,R3
	MOV	R3,A
	JNC	BTF4
	MOV	R3,#80H
	INC	R2
BTF4:	MOV	DPTR,#BTFL
	MOV	A,@R0
	ADD	A,#19
	MOV	B,#3
	MUL	AB
	ADD	A,DPL
	MOV	DPL,A
	JNC	BTF5
	INC	DPH
BTF5:	CLR	A
	MOVC	A,@A+DPTR
	MOV	C,ACC.6
	MOV	ACC.7,C
	MOV	R5,A
	MOV	A,#1
	MOVC	A,@A+DPTR
	MOV	R6,A
	MOV	A,#2
	MOVC	A,@A+DPTR
	MOV	R7,A
	LCALL	MUL1
	MOV	C,1DH
	MOV	1FH,C
	LJMP	MOV0
FTOB:	INC	R0
	MOV	A,@R0
	INC	R0
	ORL	A,@R0
	DEC	R0
	DEC	R0
	JNZ	FTB0
	MOV	@R0,#41H
	RET
FTB0:	MOV	A,@R0
	MOV	C,ACC.7
	MOV	1DH,C
	CLR	ACC.7
	MOV	@R0,A
	LCALL	MVR0
	MOV	DPTR,#BFL0
	MOV	B,#0
	MOV	A,R2
	JNB	ACC.7,FTB1
	MOV	DPTR,#BTFL
	MOV	B,#0EDH
	ADD	A,#16
	JNC	FTB1
	MOV	DPTR,#BFLN
	MOV	B,#0FAH
FTB1:	CLR	A
	MOVC	A,@A+DPTR
	MOV	C,ACC.6
	MOV	ACC.7,C
	MOV	R5,A
	MOV	A,#1
	MOVC	A,@A+DPTR
	MOV	R6,A
	MOV	A,#2
	MOVC	A,@A+DPTR
	MOV	R7,A
	MOV	A,R5
	CLR	C
	SUBB	A,R2
	JB	ACC.7,FTB2
	JNZ	FTB3
	MOV	A,R6
	CLR	C
	SUBB	A,R3
	JC	FTB2
	JNZ	FTB3
	MOV	A,R7
	CLR	C
	SUBB	A,R4
	JC	FTB2
	JNZ	FTB3
	MOV	R5,B
	INC	R5
	MOV	R6,#10H
	MOV	R7,#0
	SJMP	FTB6
FTB2:	INC	DPTR
	INC	DPTR
	INC	DPTR
	INC	B
	SJMP	FTB1
FTB3:	PUSH	B
	LCALL	DIV3
FTB4:	MOV	A,R2
	JZ	FTB5
	CLR	C
	LCALL	RR1
	SJMP	FTB4
FTB5:	POP	ACC
	MOV	R5,A
	LCALL	HB2
	MOV	R6,A
	LCALL	HB2
	MOV	R7,A
	MOV	A,R3
	RLC	A
	CLR	A
	ADDC	A,R7
	DA	A
	MOV	R7,A
	CLR	A
	ADDC	A,R6
	DA	A
	MOV	R6,A
	JNC	FTB6
	MOV	R6,#10H
	INC	R5
FTB6:	INC	R0
	INC	R0
	MOV	A,R7
	MOV	@R0,A
	DEC	R0
	MOV	A,R6
	MOV	@R0,A
	DEC	R0
	MOV	A,R5
	MOV	C,1DH
	MOV	ACC.7,C
	MOV	@R0,A
	RET
HB2:	MOV	A,R4
	MOV	B,#100
	MUL	AB
	MOV	R4,A
	MOV	A,B
	XCH	A,R3
	MOV	B,#100
	MUL	AB
	ADD	A,R3
	MOV	R3,A
	JNC	HB21
	INC	B
HB21:	MOV	A,B
	MOV	B,#10
	DIV	AB
	SWAP	A
	ORL	A,B
	RET
BTFL:	DB	41H,0ECH,1EH	;1.0000E-19
	DB	45H,93H,93H	;1.0000E-18
	DB	48H,0B8H,78H	;1.0000E-17
	DB	4BH,0E6H,96H	;1.0000E-16
	DB	4FH,90H,1DH	;1.0000E-15
	DB	52H,0B4H,25H	;1.0000E-14
	DB	55H,0E1H,2EH	;1.0000E-13
	DB	59H,8CH,0BDH	;1.0000E-12
	DB	5CH,0AFH,0ECH	;1.0000E-11
	DB	5FH,0DBH,0E7H	;1.0000E-10
	DB	63H,89H,70H	;1.0000E-9
	DB	66H,0ABH,0CCH	;1.0000E-8
	DB	69H,0D6H,0C0H	;1.0000E-7
BFLN:	DB	6DH,86H,38H	;1.0000E-6
	DB	70H,0A7H,0C6H	;1.0000E-5
	DB	73H,0D1H,0B7H	;1.0000E-4
	DB	77H,83H,12H	;1.0000E-3
	DB	7AH,0A3H,0D7H	;1.0000E-2
	DB	7DH,0CCH,0CDH	;1.0000E-1
BFL0:	DB	1,80H,00H	;1.0000
	DB	4,0A0H,00H	;1.0000E1
	DB	7,0C8H,00H	;1.0000E2
	DB	0AH,0FAH,00H	;1.0000E3
	DB	0EH,9CH,40H	;1.0000E4
	DB	11H,0C3H,50H	;1.0000E5
	DB	14H,0F4H,24H	;1.0000E6
	DB	18H,98H,97H	;1.0000E7
	DB	1BH,0BEH,0BCH	;1.0000E8
	DB	1EH,0EEH,6BH	;1.0000E9
	DB	22H,95H,03H	;1.0000E10
	DB	25H,0BAH,44H	;1.0000E11
	DB	28H,0E8H,0D5H	;1.0000E12
	DB	2CH,91H,85H	;1.0000E13
	DB	2FH,0B5H,0E6H	;1.0000E14
	DB	32H,0E3H,60H	;1.0000E15
	DB	36H,8EH,1CH	;1.0000E16
	DB	39H,31H,0A3H	;1.0000E17
	DB	3CH,0DEH,0BH	;1.0000E18
	DB	40H,8AH,0C7H	;1.0000E19


	END


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -