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

📄 tjave.asm

📁 单片机程序设计基础 随书光盘
💻 ASM
字号:
;计算平均值的算法。
ADR	EQU	2000H	;样本数据数组首址。
FN	EQU	30H	;样本个数(浮点格式)存放单元的首址。
XI	EQU	33H	;当前样本存放单元的首址。
AVE	EQU	36H	;平均值存放单元的首址。
CON	DATA	2EH	;循环计数器。
N	DATA	2FH	;样本个数(不超过255个)存放单元。


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	N,#200		;共有200个样本数据。
	MOV	P2,#HIGH(ADR)	;片外RAM中样本数据存放首址。
	MOV	R0,#LOW(ADR)
	MOV	DPTR,#TABL	;测试用样本数据表首址。
	MOV	CON,N		;待测试数据个数。		
TEST1:	MOV	R6,#3
READ:	CLR	A
	MOVC	A,@A+DPTR	;将测试数据存放到片外RAM中。
	MOVX	@R0,A
	INC	DPTR
	INC	R0
	CJNE	R0,#0,READ1
	INC	P2
READ1:	DJNZ	R6,READ
	DJNZ	CON,TEST1
	LCALL	AVERAG		;调用求平均数算法。
STOP:	LJMP	STOP		;结果为AVE=1.745 ( 01H 0DFH 4FH )。

AVERAG:	MOV	CON,N	;准备累加全部样本数据。
	MOV	DPTR,#ADR;指向存放样本数据的片外RAM首址。
	MOV	R0,#AVE	;将浮点累加器清零。
	LCALL	FCLR
AVE1:	MOV	R2,#3	;将一个样本数据传送到片内XI单元中。
	MOV	R1,#XI
AVE2:	MOVX	A,@DPTR
	MOV	@R1,A
	INC	R1
	INC	DPTR
	DJNZ	R2,AVE2
	MOV	R1,#XI	;将这个样本数据累加到AVE中。
	LCALL	FADD
	DJNZ	CON,AVE1;累加完全部样本数据。
	MOV	FN,#8	;将样本个数转换成格式化浮点数。
	MOV	FN+1,N
	MOV	FN+2,#0
	MOV	R0,#FN
	LCALL	FSDT
	MOV	R0,#AVE	;将累加和作为被除数。
	MOV	R1,#FN	;以样本个数为除数。
	LCALL	FDIV	;相除后得到平均值。
	RET		;求平均值的算法结束。

TABL:	DB	01H,0E7H,41H	;1.807   以下是200个测试样本数据。
	DB	01H,0DDH,83H	;1.731
	DB	01H,0E8H,14H	;1.813
	DB	01H,0E8H,0C3H	;1.818
	DB	01H,0E8H,7DH	;1.816
	DB	01H,0DCH,58H	;1.721
	DB	01H,0D7H,0E3H	;1.687
	DB	01H,0DAH,15H	;1.704
	DB	01H,0D6H,0CAH	;1.678
	DB	01H,0D6H,60H	;1.675
	DB	01H,0E9H,0FFH	;1.828
	DB	01H,0D9H,0F2H	;1.703
	DB	01H,0E1H,49H	;1.760
	DB	01H,0E6H,16H	;1.798
	DB	01H,0E2H,97H	;1.770
	DB	01H,0DFH,0EAH	;1.749
	DB	01H,0E0H,0E0H	;1.757
	DB	01H,0E2H,74H	;1.769
	DB	01H,0E2H,0AH	;1.766
	DB	01H,0E2H,0BAH	;1.771
	DB	01H,0E3H,8DH	;1.778
	DB	01H,0DAH,5BH	;1.706
	DB	01H,0DEH,8AH	;1.739
	DB	01H,0DCH,0C2H	;1.725
	DB	01H,0DAH,5BH	;1.706
	DB	01H,0E4H,0A6H	;1.786
	DB	01H,0DBH,97H	;1.716
	DB	01H,0D9H,0CFH	;1.702
	DB	01H,0E7H,1EH	;1.806
	DB	01H,0DEH,67H	;1.738
	DB	01H,0E7H,1EH	;1.806
	DB	01H,0DCH,6AH	;1.722
	DB	01H,0D7H,10H	;1.680
	DB	01H,0DEH,33H	;1.736
	DB	01H,0E9H,73H	;1.824
	DB	01H,0D5H,0D4H	;1.671
	DB	01H,0E3H,0D3H	;1.780
	DB	01H,0D5H,8EH	;1.668
	DB	01H,0EAH,69H	;1.831
	DB	01H,0D7H,56H	;1.682
	DB	01H,0DDH,0DBH	;1.733
	DB	01H,0E0H,0E0H	;1.757
	DB	01H,0E1H,6CH	;1.761
	DB	01H,0E3H,9EH	;1.778
	DB	01H,0E6H,28H	;1.798
	DB	01H,0E3H,35H	;1.775
	DB	01H,0DDH,08H	;1.727
	DB	01H,0E0H,76H	;1.754
	DB	01H,0E4H,94H	;1.786
	DB	01H,0E6H,91H	;1.801
	DB	01H,0D7H,79H	;1.683
	DB	01H,0E0H,53H	;1.753
	DB	01H,0DBH,63H	;1.714
	DB	01H,0E7H,87H	;1.809
	DB	01H,0D7H,79H	;1.683
	DB	01H,0D3H,0E8H	;1.656
	DB	01H,0D8H,0D9H	;1.694
	DB	01H,0D3H,0E8H	;1.656
	DB	01H,0DEH,33H	;1.736
	DB	01H,0E2H,2DH	;1.767
	DB	01H,0D8H,0B6H	;1.693
	DB	01H,0E3H,0C1H	;1.779
	DB	01H,0E9H,2DH	;1.822
	DB	01H,0DFH,05H	;1.742
	DB	01H,0DFH,4CH	;1.744
	DB	01H,0EBH,0EBH	;1.843
	DB	01H,0E1H,7EH	;1.762
	DB	01H,0DDH,0B8H	;1.732
	DB	01H,0DEH,9CH	;1.739
	DB	01H,0ECH,0EH	;1.844
	DB	01H,0DCH,24H	;1.720
	DB	01H,0D4H,75H	;1.660
	DB	01H,0E3H,00H	;1.773
	DB	01H,0EBH,0A5H	;1.841
	DB	01H,0D8H,0D9H	;1.694
	DB	01H,0E6H,91H	;1.801
	DB	01H,0EDH,4BH	;1.854
	DB	01H,0EDH,04H	;1.852
	DB	01H,0DEH,33H	;1.736
	DB	01H,0DFH,0A3H	;1.747
	DB	01H,0E2H,0AH	;1.766
	DB	01H,0DCH,58H	;1.721
	DB	01H,0DAH,0D6H	;1.710
	DB	01H,0DCH,12H	;1.719
	DB	01H,0EAH,69H	;1.831
	DB	01H,0D2H,0F2H	;1.648
	DB	01H,0D3H,15H	;1.649
	DB	01H,0E5H,8AH	;1.793
	DB	01H,0DFH,80H	;1.746
	DB	01H,0EDH,0D7H	;1.858
	DB	01H,0DFH,0B5H	;1.748
	DB	01H,0E2H,97H	;1.770
	DB	01H,0DEH,0F4H	;1.742
	DB	01H,0E3H,58H	;1.776
	DB	01H,0E5H,78H	;1.793
	DB	01H,0E5H,0BFH	;1.795
	DB	01H,0DAH,7EH	;1.707
	DB	01H,0E1H,0B2H	;1.763
	DB	01H,0E6H,0C6H	;1.803
	DB	01H,0D5H,01H	;1.664
	DB	01H,0E1H,6CH	;1.761
	DB	01H,0E9H,73H	;1.824
	DB	01H,0D6H,0CAH	;1.678
	DB	01H,0D8H,6FH	;1.691
	DB	01H,0DDH,60H	;1.729
	DB	01H,0E4H,3CH	;1.783
	DB	01H,0D0H,0D2H	;1.631
	DB	01H,0D1H,0D9H	;1.639
	DB	01H,0E9H,2DH	;1.822
	DB	01H,0E0H,88H	;1.754
	DB	01H,0DFH,29H	;1.743
	DB	01H,0DDH,0A6H	;1.732
	DB	01H,0DBH,63H	;1.714
	DB	01H,0DCH,12H	;1.719
	DB	01H,0E7H,0CEH	;1.811
	DB	01H,0E2H,1CH	;1.766
	DB	01H,0D6H,83H	;1.676
	DB	01H,0DFH,0FBH	;1.750
	DB	01H,0ECH,78H	;1.847
	DB	01H,0D0H,0D2H	;1.631
	DB	01H,0EFH,02H	;1.867
	DB	01H,0E0H,65H	;1.753
	DB	01H,0E3H,0D3H	;1.780
	DB	01H,0E4H,4EH	;1.784
	DB	01H,0D8H,0D9H	;1.694
	DB	01H,0E7H,1EH	;1.806
	DB	01H,0E0H,1EH	;1.751
	DB	01H,0E9H,0AH	;1.821
	DB	01H,0DDH,71H	;1.730
	DB	01H,0D8H,4CH	;1.690
	DB	01H,0DFH,0FBH	;1.750
	DB	01H,0E2H,0BAH	;1.771
	DB	01H,0E5H,32H	;1.791
	DB	01H,0EFH,5AH	;1.870
	DB	01H,0CCH,0A2H	;1.599
	DB	01H,0DDH,0FEH	;1.734
	DB	01H,0E3H,8DH	;1.778
	DB	01H,0DEH,67H	;1.738
	DB	01H,0EAH,69H	;1.831
	DB	01H,0F1H,0D2H	;1.889
	DB	01H,0DDH,2BH	;1.728
	DB	01H,0E1H,5BH	;1.761
	DB	01H,0E1H,0C4H	;1.764
	DB	01H,0E6H,5DH	;1.800
	DB	01H,0D6H,1AH	;1.673
	DB	01H,0F2H,0A5H	;1.896
	DB	01H,0DBH,74H	;1.714
	DB	01H,0E4H,0B7H	;1.787
	DB	01H,0E5H,67H	;1.792
	DB	01H,0D9H,42H	;1.697
	DB	01H,0D3H,5CH	;1.651
	DB	01H,0E1H,8FH	;1.762
	DB	01H,0E4H,94H	;1.786
	DB	01H,0DDH,0C9H	;1.733
	DB	01H,0E6H,0D8H	;1.803
	DB	01H,9AH,0E1H	;1.210
	DB	01H,0ACH,0CDH	;1.350
	DB	01H,8EH,14H	;1.110
	DB	01H,0DFH,0D8H	;1.749
	DB	02H,96H,66H	;2.350
	DB	01H,0DFH,0B5H	;1.748
	DB	01H,0E2H,0AH	;1.766
	DB	01H,0E5H,78H	;1.793
	DB	01H,0E4H,0ECH	;1.788
	DB	01H,0DFH,4CH	;1.744
	DB	01H,0E3H,7BH	;1.777
	DB	01H,0DDH,2BH	;1.728
	DB	01H,0DBH,0CCH	;1.717
	DB	01H,0DCH,12H	;1.719
	DB	01H,0E1H,37H	;1.760
	DB	01H,0E2H,0BAH	;1.771
	DB	01H,0E0H,65H	;1.753
	DB	01H,0DBH,0BH	;1.711
	DB	01H,0D9H,0F2H	;1.703
	DB	01H,0E3H,0D3H	;1.780
	DB	01H,0DAH,0F9H	;1.711
	DB	01H,0DCH,35H	;1.720
	DB	01H,0E4H,0ECH	;1.788
	DB	01H,0EAH,0AFH	;1.833
	DB	01H,0DEH,8AH	;1.739
	DB	01H,0DDH,1AH	;1.727
	DB	01H,0E1H,0F9H	;1.765
	DB	01H,0DDH,08H	;1.727
	DB	01H,0E1H,8FH	;1.762
	DB	01H,0E3H,0D3H	;1.780
	DB	01H,0E0H,42H	;1.752
	DB	01H,0DAH,0A1H	;1.708
	DB	01H,0D9H,77H	;1.699
	DB	01H,0E5H,0BFH	;1.795
	DB	01H,0D8H,29H	;1.689
	DB	01H,0E7H,1EH	;1.806
	DB	01H,0D9H,0E0H	;1.702
	DB	01H,0DCH,47H	;1.721
	DB	01H,0DFH,3AH	;1.744
	DB	01H,0DDH,0B8H	;1.732
	DB	01H,0DFH,80H	;1.746
	DB	01H,0E5H,67H	;1.792
	DB	01H,0E6H,6EH	;1.800
	DB	01H,0DAH,0F9H	;1.711
	DB	01H,0E2H,62H	;1.769

;以下是浮点子程序库中的有关子程序。
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	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

FCLR:	INC	R0
	INC	R0
	CLR	A
	MOV	@R0,A
	DEC	R0
	MOV	@R0,A
	DEC	R0
	MOV	@R0,#41H
	RET


	END

⌨️ 快捷键说明

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