XA-S3 MOV/MOVX

OP #4583738
Lesenswert?

Hallo,

Ich finde im Netz sehr wenig über den XA-S3 von Philips/NXP.
Vor allem müsste ich unbedingt wissen wie es mit den MOV bzw. MOVX 
Befehlen funktioniert.

Laut User Manual gibt es für MOV die Möglichkeit der 
doppelt-Register-indirekten Adressierung oder auch eins mit 
Register-indirekt plus Autoinkrement.

Aber der lahme MOVX-Befehl geht nur vom RAM in ein Register (und 
umgekehrt), noch dazu steht da etwas von Kompatibilitäts-Berechtigung 
zum alten 8051er.


Ich müsste nun aber einen Datenbereich von einer Stelle des externen RAM 
zu einer anderen Stelle ins externe RAM kopieren.
Meine Vermutung bisher ist dass die vielen MOV-Befehle für das interne 
RAM gelten und die 2 MOVX-Befehle für das externe RAM.

Bitte korrigiert mich ... es wäre nämlich erbärmlich langsam nur mit den 
2 Befehlen !
#4583878
Lesenswert?

H-G S. schrieb:
> Meine Vermutung bisher ist dass die vielen MOV-Befehle für das interne
> RAM gelten und die 2 MOVX-Befehle für das externe RAM.

Laut memory Map schließt sich der extene RAM nahtlos an den internen an. 
Es geht mit MOVX der interne Bereich auf dem externen Bus raus, der bei 
allen anderen Befehlen vom internen RAM "verdeckt" ist. Würde ich nur in 
Spezialfällen nutzen.

Die "normalen" MOV verwenden IMHO externen RAM sobald die Addresse 
größer als das Maximum des Internen ist.

Der Memory2Memory Move Befehl erfordert das beide Bereiche im selben 
Segment liegen, also innerhalb derselben 64KB.
OP #4585428
Lesenswert?

Tatsächlich ... ich hätte nur ein paar Seiten weiter lesen müssen.

Der MOVX-Befehl ist hauptsächlich zum expliziten Zugriff auf den 
Datenspeicher der sich mit dem internen Datenspeicher überlappt.


Ich hoffe du meinst mit "Memory2Memory Move Befehl" nicht den Befehl wo 
man Register-indirekt mit Autoinkrement den Datenspeicher kopieren kann 
?
Den brauche ich nämlich für Sprites/Tiles in den Grafikpuffer kopieren 
:-)
OP #4591502
Lesenswert?

Laut User Manual hat der XA-S3 zwei Segmentregister, die man den 
Arbeitsregistern einzeln zuweisen kann.

Also müsste ich dem Daten lesenden Indexregister das eine 
Segmentregister zuweisen und dem Daten schreibenden Indexregister das 
andere Segmentregister.

Da stand dass der Stackpointer das eine Segmentregister auch benutzt, 
das heisst es könnte Probleme geben wenn ein Interrupt auftritt während 
ich das Segmentregister vom eigentlichen Stackbereich abweichend 
beschrieben habe.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren