Die MOVX-Befehle transportieren Daten zwischen dem Akkumulator (A) und dem externen Datenspeicher (X von e X tern). Die zwei verschiedenen Befehlstypen erzeugen entweder eine indirekte 8bit- oder eine indirekte 16bit-Adresse für den externen RAM-Datenspeicher.
8bit-Adresse
R0 oder R1 der gerade gewählten Registerbank erzeugt eine 8bit-Adresse, die im Multiplex mit Daten an Port 0 zur Verfügung steht. Acht Bits sind zur Decodierung bei der externen E/A-Erweiterung ausreichend, was jedoch einen relativ kleinen RAM-Bereich bedeutet (max. 256 Byte). Zur Erzielung etwas größerer Bereiche können beliebige Anschlüsse der AUsgangsports für die Ausgabe höherwertiger Adressbity verwendet werden. Diese Anschlüsse müssen dann vor einem MOVX-Befehl entsprechend programmiert werden.
16bit-Adresse
Der Datenzeiger (DPTR) erzeugt eine 16bit -Adresse. Die unteren acht Adressbits (DPL) liegen im Multiplex mit Daten an Port 0 und die oberen acht Adressbits (DPH) liegen an Port 2 zur Verfügung. Das spezielle Funktionsregister Port 2 behält seinen früheren Inhalt, während am Ausgang von Port 2 der Inhalt von DPH ansteht. Diese Arbeitsweise ist schneller und effizienter, wenn man auf sehr große Speicherbereiche (bis zu 64 kBytes) zugreifen will, da keinezusätzlichen Befehle zur Programmierung der Ausgangsports erforderlich sind.
Bei bestimmten Situationen ist es möglich, die beiden MOVX-Befehlstypen alternativ zu verwenden. Ein großer externer Speicherbereich, dessen höherwertige Adressleitung durch Port 2 getrieben werden, läßt sich über den Datenzeiger adressieren oder aber mittels Programmierung der höherwertigen Adressbits von Port 2 und einem folgenden MOVX-Befehl, der die Register R0 oder R1 benutzt.
Kennzeichnungsbits werden nicht beeinflusst.
|