STACK	EQU		1FH				
BOTTOM	EQU		00H				
TOP	DATA		3EH				
TREE	EQU		20H					
POINT	EQU		21H					
OUT		EQU		22H				
TST:	
MOV	SP,#5FH						
MOV	DPTR,#DATS					
MOV	P2,#TREE
MOV	R0,#0
MOV	R2,#19
CPY:	
CLR	A
MOVC	A,@A+DPTR
MOVX	@R0,A
INC		DPTR
INC		R0
DJNZ	R2,CPY
MOV	DPTR,#FDAT					
MOV	P2,#POINT
MOV	R0,#0
MOV	R2,#19
CPY1:	
CLR		A
MOVC	A,@A+DPTR
MOVX	@R0,A
INC		DPTR
INC		R0
DJNZ	R2,CPY1
MOV	DPH,#OUT					
MOV	DPL,#0
MOV	R2,#0
CLR		A
CLEAR:	
MOVX	@DPTR,A					
INC	DPTR
DJNZ	R2,CLEAR
MOV	P2,#TREE					
MOV	R0,#0
MOV	DPH,#OUT				
MOV	DPL,#0
MOVX	A,@R0						
MOVX	@DPTR,A						
MOV	R2,A						
INC		R2						
INC		R0						
INC		DPTR					
JZ		STOP					
MOV	SP,#5FH						
LCALL	SETNULL						
LCALL	PRE							
STOP:	LJMP	STOP				
DATS:	
DB	12H,41H,42H,43H					
DB	44H,45H,46H,47H
DB	48H,49H,4AH,4BH
DB	4CH,4DH,4EH,4FH
DB	50H,51H,52H
FDAT:	
DB	00H,00H,01H,01H					
DB	01H,02H,02H,04H
DB	05H,05H,07H,07H
DB	08H,08H,08H,0AH
DB	0AH,0AH,0BH
PRE:	
MOV	P2,#TREE						
MOVX	A,@R0						
JZ		PREND						
MOVX	@DPTR,A						
INC		DPTR					
MOV	A,R0							
INC		A						
MOV	R1,A							
LOOP:	
MOV	A,R1							
XRL		A,R2
JZ		PREND						
MOV	P2,#POINT				
MOVX	A,@R1					
CLR		C
SUBB	A,R0							
JC		LOOPE						
JNZ		PREND					
MOV	A,R0							
LCALL	DPUSH						
MOV	A,R1
LCALL	DPUSH						
MOV	R0,A							
LCALL	PRE							
LCALL	DPOP						
MOV	R1,A
LCALL	DPOP					
MOV	R0,A
LOOPE:	
INC		R1							
SJMP	LOOP
PREND:	
RET								
SETNULL:
MOV	A,#BOTTOM					
MOV	TOP,A						
RET								
DPUSH:	
INC		TOP							
PUSH	DPH
PUSH	DPL
MOV	DPH,#STACK					
MOV	DPL,TOP						
MOVX	@DPTR,A						
POP		DPL
POP		DPH
RET		;结束。
DPOP:	
PUSH	DPH
PUSH	DPL
MOV	DPH,#STACK					
MOV	DPL,TOP					
MOVX	A,@DPTR						
DEC		TOP							
POP		DPL
POP		DPH
RET



