STACK EQU 1FH BOTTOM EQU 00H TOP DATA 3EH TREE EQU 20H POINT1 EQU 21H POINT2 EQU 22H POINT3 EQU 23H OUT EQU 24H 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,#Z1 MOV P2,#POINT1 MOV R0,#0 MOV R2,#19 CPY1: CLR A MOVC A,@A+DPTR MOVX @R0,A INC DPTR INC R0 DJNZ R2,CPY1 MOV DPTR,#Z2 MOV P2,#POINT2 MOV R0,#0 MOV R2,#19 CPY2: CLR A MOVC A,@A+DPTR MOVX @R0,A INC DPTR INC R0 DJNZ R2,CPY2 MOV DPTR,#Z3 MOV P2,#POINT3 MOV R0,#0 MOV R2,#19 CPY3: CLR A MOVC A,@A+DPTR MOVX @R0,A INC DPTR INC R0 DJNZ R2,CPY3 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 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 Z1: DB 00H,02H,05H,00H DB 07H,08H,00H,0AH DB 0CH,00H,0FH,12H DB 00H,00H,00H,00H DB 00H,00H,00H Z2: DB 00H,03H,06H,00H DB 00H,09H,00H,0BH DB 0DH,00H,10H,00H DB 00H,00H,00H,00H DB 00H,00H,00H Z3: DB 00H,04H,00H,00H DB 00H,00H,00H,00H DB 0EH,00H,11H,00H DB 00H,00H,00H,00H DB 00H,00H,00H PRE: MOV P2,#TREE MOVX A,@R0 JZ PREND MOVX @DPTR,A INC DPTR MOV P2,#POINT1 MOVX A,@R0 JZ PREND XCH A,R0 LCALL DPUSH LCALL PRE LCALL DPOP MOV R0,A MOV P2,#POINT2 MOVX A,@R0 JZ PREND XCH A,R0 LCALL DPUSH LCALL PRE LCALL DPOP MOV R0,A MOV P2,#POINT3 MOVX A,@R0 JZ PREND MOV R0,A LCALL PRE 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