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 !
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.
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 :-)
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.