STACK	EQU		1FH			
BOTTOM	EQU		00H				
TOP		DATA	3EH				
TREE	EQU		20H				
OUT		EQU		21H				
TST:	
MOV	SP,#5FH				
MOV	DPTR,#DATS				
MOV	P2,#TREE
MOV	R0,#0
MOV	R2,#32
CPY:	
CLR		A
MOVC	A,@A+DPTR
MOVX	@R0,A
INC		DPTR
INC		R0
DJNZ	R2,CPY
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					
INC		R0					
INC		DPTR				
JZ		STOP					
LCALL	SETNULL					
LCALL	MID						
DATS:	
DB		0BH,41H,42H,43H
DB		44H,45H,46H,00H
DB		47H,48H,49H,00H
DB		4AH,4BH,00H,00H
DB		0,0,0,0
DB		0,0,0,0
DB		0,0,0,0
DB		0,0,0,0
MID:	
MOVX	A,@R0					
JZ		MIDEND					
MOV	A,R0						
JB		ACC.7,MID1			
LCALL	DPUSH					
CLR		C						
RLC		A
MOV	R0,A						
LCALL	MID						
LCALL	DPOP					
MOV	R0,A
MID1:	
MOVX	A,@R0					
MOVX	@DPTR,A					
INC		DPTR					
MOV	A,R0						
JB		ACC.7,MIDEND			
SETB	C						
RLC		A
MOV	R0,A						
LCALL	MID						
MIDEND:	
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		



