|  
iorout:	mov	p1,#$ff		;Vorsichtshalber alle Portpins auf 1
	mov	r0,#$2a		;Zeiger auf 3.Byte lesen
	mov	r1,#$2e		;Zeiger auf 3.Byte schreiben
	mov	r2,#6		;Schleifenzähler
ior1:	mov	a,@r1		;Byte lesen
	anl	a,$f0		;nur oberes Nibble
	orl	a,r2		;Adresse in die untersten 4 Bits
	dec	a		;Korrektur der Adresse
	swap	a		;Nibbles tauschen, damit Daten "unten"
	mov	p1,a		;Bits ausgeben
	setb	p1.7		;auf Lesen umschalten
	mov	a,p1		;Daten einlesen
	swap	a		;Daten in oberes Nibble
	xchd	a,@r0		;unteres Nibble holen
	mov	@r0,a		;Datum zurückschreiben
	dec	r2		;nächstniedrige Adresse
	mov	a,@r1		;Byte lesen
	swap	a		;Nibbles tauschen
	anl	a,$f0		;nur oberes Nibble			 
	orl	a,r2		;Adresse in die untersten 4 Bits
	dec	a		;Korrektur der Adresse
	swap	a		;Nibbles tauschen, damit Daten "unten"
	mov	p1,a		;Bits ausgeben
	setb	p1.7		;auf Lesen umschalten
	mov	a,p1		;Daten einlesen	
	xchd	a,@r0		;unteres Nibble schreiben
	dec	r0		;nächstniedriges Byte zum Lesen
	dec	r1		;nächstniedriges Byte zum Schreiben
	djnz	r2,ior1		;Schleife
	mov	p1,#$ff		;Vorsichtshalber alle Portpins auf 1
	ret			;und Schluss
 
 |