GRAPH	EQU		20H					
QUEUE	EQU		1FH					
OUT		EQU		21H				
NODE	EQU		30H				
FG		EQU		40H					
D		EQU		05H					
F		DATA	3CH					
R		DATA	3DH				
N		DATA	3EH					
K		DATA	3FH					
TEST:	
MOV	SP,#5FH					
MOV	DPTR,#GRA					
MOV	P2,#GRAPH
MOV	R0,#0
MOV	R2,#4AH
CPY:	
CLR		A
MOVC	A,@A+DPTR
MOVX	@R0,A
INC		DPTR
INC		R0
DJNZ	R2,CPY
MOV	P2,#GRAPH					
MOV	R0,#NODE
MOVX	A,@R0					
JZ		STOP						
INC		A
MOV	N,A						
MOV	K,#1							
TEST1:	
MOV	DPH,#OUT					
MOV	DPL,#0
MOV	R2,#0
CLR	A
CLEAR:	
MOVX	@DPTR,A						
INC	DPTR
DJNZ	R2,CLEAR
MOV	P2,#GRAPH				
MOV	R0,#NODE
MOV	DPH,#OUT					
MOV	DPL,#0
MOVX	A,@R0					
MOVX	@DPTR,A						
INC		DPTR						
MOV	R7,A
MOV	R0,#FG					
INC		R0
CLRF:	CLR	A
MOVX	@R0,A
INC		R0
DJNZ	R7,CLRF
LCALL	SETNULL						
MOV	A,K						
LCALL	DATAIN						
LCALL	BFSL					
INC		K							
MOV	A,K
CJNE	A,N,TEST1					
STOP:	LJMP	STOP
;出发点为1时的遍历顺序:ABHCIGDFE
;出发点为2时的遍历顺序:BACIHDFGE
;出发点为3时的遍历顺序:CBDFAIEGH
;出发点为4时的遍历顺序:DCEBFGAIH
;出发点为5时的遍历顺序:EDFGCIHBA
;出发点为6时的遍历顺序:FCEGIBDHA
;出发点为7时的遍历顺序:GEFHDCIAB
;出发点为8时的遍历顺序:HAGIBEFCD
;出发点为9时的遍历顺序:IBFHACEGD
BFSL:	
MOV	A,F							
XRL		A,R
JZ		BFSEND					
LCALL	DATAOUT						
MOV	R2,A
ADD		A,#NODE
MOV	R0,A
MOVX	A,@R0						
MOVX	@DPTR,A					
INC		DPTR
MOV	A,R2
ADD		A,#FG
MOV	R1,A
MOV	A,#0FFH
MOVX	@R1,A						
MOV	A,R2							
DEC		A
MOV	B,#D
MUL		AB
MOV	R1,A							
LOOP:	
MOVX	A,@R1						
JZ		BFSL						
MOV	R2,A							
ADD		A,#FG
MOV	R0,A
MOVX	A,@R0						
JNZ		LOOPE					
MOV	A,R2
LCALL	DATAIN						
MOV	A,#1
MOVX	@R0,A					
LOOPE:	
INC		R1							
LJMP	LOOP					
BFSEND:	
RET								
SETNULL:
MOV	A,#0FFH
MOV	F,A						
MOV	R,A						
RET								
DATAIN:	
PUSH	DPH
PUSH	DPL
INC		R						
MOV	DPL,R
MOV	DPH,#QUEUE
MOVX	@DPTR,A						
POP		DPL
POP		DPH
RET									
DATAOUT:
PUSH	DPH
PUSH	DPL
INC	F		
MOV	DPL,F
MOV	DPH,#QUEUE
MOVX	A,@DPTR						
POP		DPL
POP		DPH
RET									
;2000H: 02 08 00 00 00
;2005H: 01 03 09 00 00
;200AH: 02 04 06 00 00
;200FH: 03 05 00 00 00
;2014H: 04 06 07 00 00
;2019H: 03 05 07 09 00
;201EH: 05 06 08 00 00
;2023H: 01 07 09 00 00
;2028H: 02 06 08 00 00
;2030H: 09 41 42 43 44 45 46 47 48 49
;2040H: 00 00 00 00 00 00 00 00 00 00
GRA:	
DB		02H,08H,00H,00H				
DB		00H,01H,03H,09H
DB		00H,00H,02H,04H
DB		06H,00H,00H,03H
DB		05H,00H,00H,00H
DB		04H,06H,07H,00H
DB		00H,03H,05H,07H
DB		09H,00H,05H,06H
DB		08H,00H,00H,01H
DB		07H,09H,00H,00H
DB		02H,06H,08H,00H
DB		00H,00H,00H,00H
DB		09H,41H,42H,43H
DB		44H,45H,46H,47H
DB		48H,49H,00H,00H
END



