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

📄 6.3.4并归排序.txt

📁 这是《MCS-51单片机应用开发实用子程序》配套源代码,对初学者很有用的
💻 TXT
字号:
1单字节无符号数并归排序实例
DATS	EQU		20H			
N		EQU		5DH			
DATS1	EQU		21H			
TEST:	
MOV	DPTR,#LIST			
MOV	P2,#DATS
MOV	R0,#0
MOV	R2,#N
CPY:	
CLR		A
MOVC	A,@A+DPTR
MOVX	@R0,A
INC		DPTR
INC		R0
DJNZ	R2,CPY
MGSRT1:	
MOV	R3,#1				
LOOP:	
MOV	P2,#DATS				
MOV	DPH,#DATS1
LCALL	MGPSS				
MOV	P2,#DATS1			
MOV	DPH,#DATS 
LCALL	MGPSS			
JC		LOOPE				
MOV	A,R3					
CLR		C
SUBB	A,#N					
JC		LOOP				
LOOPE:	
RET							
MGPSS:	
MOV	R7,#N				
MOV	R0,#0
MOV	DPL,#0
MERGS:	
MOV	A,R7					
JZ		MERGSE				
CLR		C
SUBB	A,R3					
JNC		MERGS2				
MERGS1:	
MOV	A,R0					
MOV	R1,A					
MOV	A,R7					
MOV	R2,A
LCALL	MOVS				
MERGSE:	
MOV	A,R3					
CLR		C
RLC		A
MOV	R3,A					
RET							
MERGS2:	
JZ		MERGS1				
MOV	R7,A					
MOV	A,R3
MOV	R6,A					
MOV	A,R0					
ADD		A,R3					
MOV	R1,A					
MOV	A,R7					
CLR		C
SUBB	A,R3					
JNC		MERGS3				
MOV	A,R7					
MOV	R5,A
MOV	R7,#0				
SJMP	MERGS4				
MERGS3:	
MOV	R7,A					
MOV	A,R3
MOV	R5,A					
MERGS4:	
MOV	A,R0					
ADD		A,R6					
ADD		A,R5					
MOV	R4,A					
LCALL	MERGE				
MOV	A,R4					
MOV	R0,A
LJMP	MERGS				
MERGE:	
MOVX	A,@R1				
MOV	B,A					
MOVX	A,@R0				
CLR	C
SUBB	A,B					
JC		MERG1				
MOVX	A,@R1				
MOVX	@DPTR,A				
INC	R1						
INC		DPTR				
DJNZ	R5,MERGE			
MOV	A,R0					
MOV	R1,A
MOV	A,R6					
MOV	R2,A					
SJMP	MOVS				
MERG1:	
MOVX	A,@R0				
MOVX	@DPTR,A				
INC		R0					
INC		DPTR				
DJNZ	R6,MERGE			
MOV	A,R5					
MOV	R2,A					
MOVS:	
MOVX	A,@R1				
MOVX	@DPTR,A
INC		DPTR
INC		R1
DJNZ	R2,MOVS
RET							

2多字节浮点数并归排序实例

ADDR	EQU	20H				
TEMP	EQU	28H				
NUMB	EQU	0120H			
D1		EQU	30H			
D2		EQU	33H				
NH		DATA	36H			
NL		DATA	37H		
LENH	DATA	38H			
LENL	DATA	39H			
CONH	DATA	3AH			
CONL	DATA	3BH			
TST:	
MOV	P2,#ADDR				
MOV	R0,#0
MOV	R2,#HIGH(NUMB)
MOV	R3,#LOW(NUMB)
MOV	DPTR,#LIST
MOV	A,R3
JZ		TST1
INC		R2
TST1:	
MOV	R4,#3
TEST2:	
CLR		A
MOVC	A,@A+DPTR
MOVX	@R0,A
INC		DPTR
INC		R0
CJNE	R0,#0,TEST3
INC		P2
TST3:	
DJNZ	R4,TST2
DJNZ	R3,TST1
DJNZ	R2,TST1
LCALL	MSORT				
MSORT:	
MOV	LENH,#0				
MOV	LENL,#1
LOOP:	
MOV	R2,#ADDR			
MOV	DPH,#TEMP			
LCALL	MPASS				
MOV	R2,#TEMP				
MOV	DPH,#ADDR 
LCALL	MPASS				
MOV	A,LENL				
CLR		C
SUBB	A,#LOW(NUMB)		
MOV	A,LENH
SUBB	A,#HIGH(NUMB)
JC		LOOP				
LOOPE:	
RET							
MPASS:	
MOV	NH,#HIGH(NUMB)		
MOV	NL,#LOW(NUMB)
MOV	R0,#0				
MOV	DPL,#0				
MERGS:	
MOV	A,NH				
ORL		A,NL
JZ		MERGSE				
MOV	A,NL					
CLR		C
SUBB	A,LENL
MOV	B,A
MOV	A,NH
SUBB	A,LENH
JNC		MERGS2				
MERGS1:	
MOV	A,R0					
MOV	R1,A					
MOV	P2,R2				
MOV	CONH,NH				
MOV	CONL,NL			
LCALL	MOVS				
MERGSE:	
MOV	A,LENL				
CLR	C
RLC	A
MOV	LENL,A				
MOV	A,LENH
RLC	A
MOV	LENH,A
RET							
MERGS2:	
MOV	NH,A
ORL		A,B
JZ		MERGS1				
MOV	NL,B					
MOV	R4,LENH				
MOV	R5,LENL
MOV	A,R5				
MOV	B,#3
MUL		AB
MOV	R6,B
MOV	R7,A
MOV	A,R4
MOV	B,#3
MUL		AB
ADD		A,R6
MOV	R6,A	
MOV	A,R0					
ADD		A,R7					
MOV	R1,A					
MOV	A,R2
ADDC	A,R6
MOV	R3,A
MOV	A,NL					
CLR	C
SUBB	A,LENL				
MOV	B,A
MOV	A,NH
SUBB	A,LENH
JNC		MERGS3			
MOV	R6,NH				
MOV	R7,NL				
MOV	NH,#0				
MOV	NL,#0
SJMP	MERGS4				
MERGS3:	
MOV	NH,A				
MOV	NL,B
MOV	R6,LENH			
MOV	R7,LENL
MERGS4:
MOV	A,R7					
MOV	B,#3
MUL		AB
MOV	CONH,B
MOV	CONL,A
MOV	A,R6
MOV	B,#3
MUL		AB
ADD		A,CONH
MOV	CONH,A	
MOV	A,R1
ADD		A,CONL
PUSH	ACC
MOV	A,R3
ADDC	A,CONH
PUSH	ACC
LCALL	MERGE				
POP		ACC					
MOV	R2,A
POP		ACC
MOV	R0,A
LJMP	MERGS				
MERGE:	
MOV	A,R0					
PUSH	ACC
XCH	A,R1
PUSH	ACC
MOV	R0,#D1
MOV	P2,R2
LCALL	LOAD
POP	ACC
PUSH	ACC
MOV	R1,A
MOV	P2,R3
MOV	R0,#D2
LCALL	LOAD
MOV	R0,#D1
MOV	R1,#D2
LCALL	FLTCMP				
POP		ACC
MOV	R1,A
POP		ACC
MOV	R0,A
JC		MERG5				
MOV	P2,R3				
MOV	B,#3					
MERG2:	
MOVX	A,@R1
MOVX	@DPTR,A
INC		DPTR
INC		R1
CJNE	R1,#0,MERG3
INC		P2
INC		R3
MERG3:	
DJNZ	B,MERG2
CJNE	R7,#0,MERG4			
DEC		R6
MERG4:	DEC	R7
MOV	A,R6
ORL		A,R7
JNZ		MERGE				
MOV	A,R0					
MOV	R1,A
MOV	P2,R2
MOV	CONH,R4				
MOV	CONL,R5				
SJMP	MOVS				
MERG5:	
MOV	P2,R2				
MOV	B,#3					
MERG6:	
MOVX	A,@R0
MOVX	@DPTR,A
INC		DPTR
INC		R0
CJNE	R0,#0,MERG7
INC		P2
INC		R2
MERG7:	
DJNZ	B,MERG6
CJNE	R5,#0,MERG8			
DEC		R4
MERG8:	
DEC	R5
MOV	A,R4
ORL		A,R5
JNZ		MERGE				
MOV	P2,R3				
MOV	CONH,R6				
MOV	CONL,R7				
MOVS:	
MOV	A,CONL
JZ		MOVS1
INC		CONH
MOVS1:	
MOV	B,#3
MOVS2:	
MOVX	A,@R1				
MOVX	@DPTR,A
INC		DPTR
INC		R1
CJNE	R1,#0,MOVS3
INC		P2
MOVS3:	
DJNZ	B,MOVS2
DJNZ	CONL,MOVS1
DJNZ	CONH,MOVS1
RET							
LOAD:	
MOV	B,#3					
LOAD1:	
MOVX	A,@R1
MOV	@R0,A
INC		R0
INC		R1
CJNE	R1,#0,LOAD2
INC		P2
LOAD2:	
DJNZ	B,LOAD1
RET
FLTCMP: 						
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

⌨️ 快捷键说明

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