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
|