;Sven Eisenhauer ;MPS1 Versuch 3 Aufgabe 3 ;16.06.2005 LSTOUT- $SFR80515.INC LSTOUT+ ORG 0000h MOV DPTR,#0F803h MOV A,#92h MOVX @DPTR,A MOV P5,#0FFh MOV P4,#0FFh MOV P1,#0FFh MOV DPTR,#0F800h MOV A,#00h MOVX @DPTR,A INC DPTR MOVX @DPTR,A INC DPTR MOVX @DPTR,A MOV R0,#0 MOV R1,#0 MOV R2,#0 MOV R3,#0 BEGIN: JB P3.3,START LJMP 8000h START: LCALL EINLES JNB P3.2,SUBJMP LCALL ADDIT SUBJMP: LCALL SUBST SJMP BEGIN SUBST: CLR C CLR OV CLR P3.4 CLR P3.5 MOV A,R0 SUBB A,R2 MOV R4,A ;LOWBYTE MOV A,R1 SUBB A,R3 MOV R5,A ;HIGHBYTE LCALL AUSG RET ADDIT: CLR C CLR OV CLR P3.4 CLR P3.5 MOV A,R0 ADD A,R2 MOV R4,A ;LOWBYTE MOV A,R3 ADDC A,R1 MOV R5,A ;HIGHBYTE LCALL AUSG RET AUSG: MOV P1,R4 ;LOWBYTE MOV A,R5 MOV DPTR,#0F802h MOVX @DPTR,A ;HIGHBYTE MOV P3.4,C JNB OV,NOOV SETB P3.5 JB ACC.7,POS MOV A,#08h ;Backspace LCALL SENDSE MOV A,#2Bh ;+ LCALL SENDSE RET POS: MOV A,#08h ;Backspace LCALL SENDSE MOV A,#2Dh ;- LCALL SENDSE RET NOOV: CLR P3.5 MOV A,#08h ;Backspace LCALL SENDSE MOV A,#20h ;space LCALL SENDSE RET EINLES: MOV DPTR,#0F800h ;Port A MOVX A,@DPTR MOV R1,A MOV R0,P1 MOV DPTR,#0F801h ;Port B MOVX A,@DPTR MOV R3,A MOV R2,P4 RET SENDSE: MOV SBUF,A CLR TI WARTE: JNB TI, WARTE RET END