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

📄 3dl.asm

📁 在定时器中断中做LED的PWM输出 AT89C2051实现A/D转换的C51程序 单片机开发系统 指令系统 程序设计 定时与中断 系统扩展 接口技术 串行口
💻 ASM
字号:
;三元一次方程组的行列式解法
;方程形式如下:
;	A11*X+A12*Y+A13*Z=B1
;	A21*X+A22*Y+A23*Z=B2
;	A31*X+A32*Y+A33*Z=B3
;入口条件:
; 系数A11,A12,A13,A21,A22,A23,A31,A32,A33,B1,B2,B3 
; 以三字节浮点数形式依次存放在片内RAM中。
;出口信息:
; 方程组的三个根X,Y,Z存放在各自定义的单元中。

A11	EQU	30H	;定义系数A11存放单元的首址。
A12	EQU	A11+3	;定义系数A12存放单元的首址(33H)。
A13	EQU	A12+3	;定义系数A13存放单元的首址(36H)。
A21	EQU	A11+9	;定义系数A21存放单元的首址(39H)。
A22	EQU	A12+9	;定义系数A22存放单元的首址(3CH)。
A23	EQU	A13+9	;定义系数A23存放单元的首址(4FH)。
A31	EQU	A21+9	;定义系数A31存放单元的首址(42H)。
A32	EQU	A22+9	;定义系数A32存放单元的首址(45H)。
A33	EQU	A23+9	;定义系数A33存放单元的首址(48H)。
B1	EQU	A33+3	;定义系数B1存放单元的首址(4BH)。
B2	EQU	B1+3	;定义系数B2存放单元的首址(4EH)。
B3	EQU	B2+3	;定义系数B3存放单元的首址(51H)。
D	EQU	B3+3	;行列式值的存放单元的首址(54H)。
TEMP	EQU	D+3	;临时变量存放单元的首址(57H)。
X	EQU	TEMP+3	;根X存放单元的首址(5AH)。
Y	EQU	X+3	;根Y存放单元的首址(5DH)。
Z	EQU	Y+3	;根Z存放单元的首址(60H)。

FLAG	DATA	23H	;浮点运算标志
PFA	BIT	FLAG.7
PFB	BIT	FLAG.6
PFC	BIT	FLAG.5
PFD	BIT	FLAG.4

	ORG	0000H
	LJMP	TEST
	
	ORG	100H
TEST:	MOV	R0,#A11		;内存系数首址
	MOV	DPTR,#DATS	;测试数据首址
	MOV	R7,#36		;36个字节
GET:	CLR	A
	MOVC	A,@A+DPTR	;把系数读入片内RAM中
	MOV	@R0,A
	INC	R0
	INC	DPTR
	DJNZ	R7,GET
	MOV	R0,#A11
CBTOF:	LCALL	BTOF		;把系数从十进制浮点数转换成二进制浮点数
	INC	R0
	INC	R0
	INC	R0
	CJNE	R0,#B3+3,CBTOF	;转换结束
	LCALL	XYZ		;用行列式法解三元一次方程组
	MOV	R0,#X		;把方程根变换成十进制浮点数
FB:	LCALL	FTOB
	INC	R0
	INC	R0
	INC	R0
	CJNE	R0,#Z+3,FB	
STOP:	LJMP	STOP		
;求解结果X=1.537   ( 01H 15H 37H )
;求解结果Y=-0.8961 ( 80H 89H 61H )
;求解结果Z=3.593   ( 01H 35H 93H )

DATS:	DB	01H,32H,73H	;A11=3.273
	DB	81H,21H,64H	;A12=-2.164
	DB	00H,35H,82H	;A13=0.3582
	DB	00H,36H,97H	;A21=0.3697
	DB	01H,15H,34H	;A22=1.534
	DB	81H,67H,62H	;A23=-6.762
	DB	81H,20H,61H	;A31=-2.061
	DB	01H,71H,86H	;A32=7.186
	DB	01H,45H,08H	;A33=4.508
	DB	01H,82H,57H	;B1=8.257
	DB	82H,25H,10H	;B2=-25.10
	DB	01H,65H,88H	;B3=6.588

XYZ:	LCALL	DETA	;求系数行列式的值,结果在D中。
	MOV	Z,D	;将系数行列式的值暂时保存在变量Z中。
	MOV	Z+1,D+1
	MOV	Z+2,D+2
	MOV	A,#A11	;指向第一列,准备求解根X。
	LCALL	XYZ0	;调用求根算法。
	MOV	X,D	;存放根X。
	MOV	X+1,D+1
	MOV	X+2,D+2
	MOV	A,#A12	;指向第二列,准备求解根Y。
	LCALL	XYZ0	;调用求根算法。
	MOV	Y,D	;存放根Y。
	MOV	Y+1,D+1
	MOV	Y+2,D+2
	MOV	A,#A13	;指向第三列,准备求解根Z。
	LCALL	XYZ0	;调用求根算法。
	MOV	Z,D	;存放根Z。
	MOV	Z+1,D+1
	MOV	Z+2,D+2
	RET	;结束。
XYZ0:	PUSH	ACC	;暂存列信息。
	MOV	R0,A	;R0指向该列。
	MOV	R1,#B1	;R1指向常数列。
	LCALL	EXCH	;进行两列元素的交换。
	LCALL	DETA	;求交换后行列式值,结果在D中。
	MOV	R1,#Z	;以系数行列式的值(暂存在Z中)为分母。
	LCALL	FDIV	;相除,得到一个根。
	POP	ACC	;取出列信息。
	MOV	R0,A
	MOV	R1,#B1	;再和常数列进行交换,恢复原来的系数行列式。
EXCH:	MOV	R7,#3	;交换三个元素。
EXC1:	MOV	R6,#3	;每个元素三个字节。
EXC2:	MOV	A,@R0
	XCH	A,@R1
	MOV	@R0,A
	INC	R0
	INC	R1
	DJNZ	R6,EXC2
	MOV	A,R0	;跳到同一列下一个元素的首址。
	ADD	A,#6
	MOV	R0,A
	DJNZ	R7,EXC1
	RET	
DETA:	MOV	D,A11	;计算行列式的值,首先A11→D
	MOV	D+1,A11+1
	MOV	D+2,A11+2
	MOV	R0,#D	;准备求主对角线三元素的乘积。
	MOV	R1,#A22	
	LCALL	FMUL	;A11×A22→D
	MOV	R1,#A33
	LCALL	FMUL	;D×A33→D
	MOV	TEMP,A21;A21→TEMP
	MOV	TEMP+1,A21+1
	MOV	TEMP+2,A21+2
	MOV	R0,#TEMP;准备求A21×A32×A13三元素的乘积。
	MOV	R1,#A32	
	LCALL	FMUL	;A21×A32→TEMP
	MOV	R1,#A13
	LCALL	FMUL	;TEMP×A13→TEMP
	MOV	R0,#D
	MOV	R1,#TEMP
	LCALL	FADD	;累加到D中。
	MOV	TEMP,A31;A31→TEMP
	MOV	TEMP+1,A31+1
	MOV	TEMP+2,A31+2
	MOV	R0,#TEMP;准备求A31×A12×A23三元素的乘积。
	MOV	R1,#A12	
	LCALL	FMUL	;A31×A12→TEMP
	MOV	R1,#A23
	LCALL	FMUL	;TEMP×A23→TEMP
	MOV	R0,#D
	MOV	R1,#TEMP
	LCALL	FADD	;累加到D中。
	MOV	TEMP,A31;A31→TEMP
	MOV	TEMP+1,A31+1
	MOV	TEMP+2,A31+2
	MOV	R0,#TEMP;准备求A31×A22×A13三元素的乘积。
	MOV	R1,#A22	
	LCALL	FMUL	;A31×A22→TEMP
	MOV	R1,#A13
	LCALL	FMUL	;TEMP×A13→TEMP
	MOV	R0,#D
	MOV	R1,#TEMP
	LCALL	FSUB	;负向累加到D中。
	MOV	TEMP,A11;A11→TEMP
	MOV	TEMP+1,A11+1
	MOV	TEMP+2,A11+2
	MOV	R0,#TEMP;准备求A11×A32×A23三元素的乘积。
	MOV	R1,#A32	
	LCALL	FMUL	;A11×A32→TEMP
	MOV	R1,#A23
	LCALL	FMUL	;TEMP×A23→TEMP
	MOV	R0,#D
	MOV	R1,#TEMP
	LCALL	FSUB	;负向累加到D中。
	MOV	TEMP,A21;A21→TEMP
	MOV	TEMP+1,A21+1
	MOV	TEMP+2,A21+2
	MOV	R0,#TEMP;准备求A21×A12×A33三元素的乘积。
	MOV	R1,#A12	
	LCALL	FMUL	;A21×A12→TEMP
	MOV	R1,#A33
	LCALL	FMUL	;A21×A12×A33→TEMP
	MOV	R0,#D
	MOV	R1,#TEMP
	LJMP	FSUB	;负向累加到D中。

;以下是浮点运算子程序库:
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	PFB,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,PFA
	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	PFA,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	PFB,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,PFB
	MOV	PFA,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	PFA
	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	PFA,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	PFA,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

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

FABS:	MOV	A,@R0
	CLR	ACC.7
	MOV	@R0,A
	RET

FRCP:	MOV	A,@R0
	MOV	C,ACC.7
	MOV	PFA,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
	MOV	A,R7
	RLC	A
	MOV	R7,A
	MOV	A,R6
	RLC	A
	MOV	R6,A
	DEC	R5
	SJMP	RCP
RCP2:	MOV	R2,#1
	MOV	R3,#80H
	MOV	R4,#0
	LCALL	DIV3
	LJMP	MOV0

FSQU:	MOV	A,R0
	XCH	A,R1
	PUSH	ACC
	LCALL	FMUL
	POP	ACC
	MOV	R1,A
	RET

FSQR:	MOV	A,@R0
	JNB	ACC.7,SQR
	SETB	OV
	RET
SQR:	INC	R0
	INC	R0
	MOV	A,@R0
	DEC	R0
	ORL	A,@R0
	DEC	R0
	JNZ	SQ
	MOV	@R0,#41H
	CLR	OV
	RET
SQ:	MOV	A,@R0
	MOV	C,ACC.6
	MOV	ACC.7,C
	INC	A
	CLR	C
	RRC	A
	MOV	@R0,A
	INC	R0
	JC	SQR0
	MOV	A,@R0
	RRC	A
	MOV	@R0,A
	INC	R0
	MOV	A,@R0
	RRC	A
	MOV	@R0,A
	DEC	R0
SQR0:	MOV	A,@R0
	JZ	SQR9
	MOV	R2,A
	INC	R0
	MOV	A,@R0
	MOV	R3,A
	MOV	A,R2
	ADD	A,#57H
	JC	SQR2
	ADD	A,#45H
	JC	SQR1
	ADD	A,#24H
	MOV	B,#0E3H
	MOV	R4,#80H
	SJMP	SQR3
SQR1:	MOV	B,#0B2H
	MOV	R4,#0A0H
	SJMP	SQR3
SQR2:	MOV	B,#8DH
	MOV	R4,#0D0H
SQR3:	MUL	AB
	MOV	A,B
	ADD	A,R4
	MOV	R4,A
	MOV	B,A
	MUL	AB
	XCH	A,R3
	CLR	C
	SUBB	A,R3
	MOV	R3,A
	MOV	A,B
	XCH	A,R2
	SUBB	A,R2
	MOV	R2,A
SQR4:	SETB	C
	MOV	A,R4
	RLC	A
	MOV	R6,A
	CLR	A
	RLC	A
	MOV	R5,A
	MOV	A,R3
	SUBB	A,R6
	MOV	B,A
	MOV	A,R2
	SUBB	A,R5
	JC	SQR5
	INC	R4
	MOV	R2,A
	MOV	R3,B
	SJMP	SQR4
SQR5:	MOV	A,R4
	XCH	A,R2
	RRC	A
	MOV	F0,C
	MOV	A,R3
	MOV	R5,A
	MOV	R4,#8
SQR6:	CLR	C
	MOV	A,R3
	RLC	A
	MOV	R3,A
	CLR	C
	MOV	A,R5
	SUBB	A,R2
	JB	F0,SQR7
	JC	SQR8
SQR7:	MOV	R5,A
	INC	R3
SQR8:	CLR	C
	MOV	A,R5
	RLC	A
	MOV	R5,A
	MOV	F0,C
	DJNZ	R4,SQR6
	MOV	A,R3
	MOV	@R0,A
	DEC	R0
	MOV	A,R2
	MOV	@R0,A
SQR9:	DEC	R0
	CLR	OV
	RET

DTOF:	MOV	R2,A
	MOV	A,@R0
	MOV	R3,A
	INC	R0
	MOV	A,@R0
	MOV	R4,A
	DEC	R0
	LCALL	RLN
	LJMP	MOV0

FTOD:	LCALL	MVR0
	MOV	A,R2
	JZ	FTD4
	JB	ACC.7,FTD4
	SETB	C
	SUBB	A,#10H
	JC	FTD1
	SETB	OV
	RET
FTD1:	SETB	C
	MOV	A,R2
	SUBB	A,#8
	JC	FTD3
FTD2:	MOV	B,#10H
	LCALL	FTD8
	SETB	F0
	CLR	C
	CLR	OV
	RET
FTD3:	MOV	B,#8
	LCALL	FTD8
	SETB	C
	CLR	F0
	CLR	OV
	RET
FTD4:	MOV	B,#0
	LCALL	FTD8
	CLR	OV
	CLR	F0
	CLR	C
	RET
FTD8:	MOV	A,R2
	CJNE	A,B,FTD9
	MOV	A,R3
	MOV	@R0,A
	INC	R0
	MOV	A,R4
	MOV	@R0,A
	DEC	R0
	RET
FTD9:	CLR	C
	LCALL	RR1
	SJMP	FTD8

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	PFC,C
	CLR	PFA
	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,PFC
	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,PFC
	MOV	PFA,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	PFC,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,PFC
	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
	DB	45H,93H,93H
	DB	48H,0B8H,78H
	DB	4BH,0E6H,96H
	DB	4FH,90H,1DH
	DB	52H,0B4H,25H
	DB	55H,0E1H,2EH
	DB	59H,8CH,0BDH
	DB	5CH,0AFH,0ECH
	DB	5FH,0DBH,0E7H
	DB	63H,89H,70H
	DB	66H,0ABH,0CCH
	DB	69H,0D6H,0C0H
BFLN:	DB	6DH,86H,38H
	DB	70H,0A7H,0C6H
	DB	73H,0D1H,0B7H
	DB	77H,83H,12H
	DB	7AH,0A3H,0D7H
	DB	7DH,0CCH,0CDH
BFL0:	DB	1,80H,00H
	DB	4,0A0H,00H
	DB	7,0C8H,00H
	DB	0AH,0FAH,00H
	DB	0EH,9CH,40H
	DB	11H,0C3H,50H
	DB	14H,0F4H,24H
	DB	18H,98H,97H
	DB	1BH,0BEH,0BCH
	DB	1EH,0EEH,6BH
	DB	22H,95H,03H
	DB	25H,0BAH,44H
	DB	28H,0E8H,0D5H
	DB	2CH,91H,85H
	DB	2FH,0B5H,0E6H
	DB	32H,0E3H,60H
	DB	36H,8EH,1CH
	DB	39H,31H,0A3H
	DB	3CH,0DEH,0BH
	DB	40H,8AH,0C7H

	END

⌨️ 快捷键说明

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