Assembler auf MSP430

J

jetmarc

Guest
Hallo,

ich habe einige Fragen zum MSP430, bezueglich der Byte-Zugriffe, fuer
die es einen MSP430 Profi braucht, oder jemanden der einen Emulator
hat:

1. Wenn ich einen Byte-Befehl benutze, der in ein Register schreibt,
was passiert dann mit dem Highbyte des Registers?

zB R4 = 0x1234
R5 = 0x5678

MOV.B R4,R5

R5 = 0x??34

2. Wenn ich einen Word-Zugriff auf das RAM oder Flash mache, aber eine
ungerade Adresse benutze, was passiert dann? Im Datenblatt steht,
Word-Zugriffe gehen immer auf gerade Adressen. Kann ich davon
ausgehen, dass normale (=compiler-generierte) Software niemals
Word-Zugriffe auf ungerade Adressen ausfuehrt? Was wuerde in den
existierenden Chips passieren?

3. Was hat es mit den SFR Registern auf sich (ab Adresse 0x0000), wofuer
werden sie benutzt?

4. Was bedeutet der Addressierungsmode S-reg=R2/CG1 mit As=01? Im
Datenblatt steht "(0) Absolute address mode" aber darunter kann ich
mir nichts vorstellen. Ein Beispiel waere der Opcode:

0x4215

der "(0)" in R5 ablegt. Was ist "(0)", woher stammen die Daten die
nach R5 abgelegt werden?

Vielen Dank schon mal im Vorraus,
Marc
 
"jetmarc" <jetmarc@hotmail.com> schrieb im Newsbeitrag
news:af3f5bb5.0409280412.41bbf1db@posting.google.com...
Hallo,

ich habe einige Fragen zum MSP430, bezueglich der Byte-Zugriffe, fuer
die es einen MSP430 Profi braucht, oder jemanden der einen Emulator
hat:

1. Wenn ich einen Byte-Befehl benutze, der in ein Register schreibt,
was passiert dann mit dem Highbyte des Registers?

zB R4 = 0x1234
R5 = 0x5678

MOV.B R4,R5

R5 = 0x??34
In R5 high steht dann eine "00".


2. Wenn ich einen Word-Zugriff auf das RAM oder Flash mache, aber eine
ungerade Adresse benutze, was passiert dann? Im Datenblatt steht,
Word-Zugriffe gehen immer auf gerade Adressen. Kann ich davon
ausgehen, dass normale (=compiler-generierte) Software niemals
Word-Zugriffe auf ungerade Adressen ausfuehrt?
JA

Was wuerde in den
existierenden Chips passieren?
Kernschmelze. (Nur SCHBASS!)


3. Was hat es mit den SFR Registern auf sich (ab Adresse 0x0000), wofuer
werden sie benutzt?
Die Register im unteren 256byte Adressbereich sind nur byte-addressierbar
Für die regs sind 8bits ausreichend

Die Register im 256-511 byte Adressbereich sind nur word-addressierbar


4. Was bedeutet der Addressierungsmode S-reg=R2/CG1 mit As=01? Im
Datenblatt steht "(0) Absolute address mode" aber darunter kann ich
mir nichts vorstellen. Ein Beispiel waere der Opcode:

0x4215

der "(0)" in R5 ablegt. Was ist "(0)", woher stammen die Daten die
nach R5 abgelegt werden?
Negertrick um die Adressierungsart ABSOLUTE nicht extra implementieren zu
müssen, bzw. weil kein Platz im instruction word mehr vorhanden ist.
Die CPU kennt aber die Adressierungsart "Indexed Mode":

"Die Adresse des Operanden ist die Summe von Index und dem Inhalt des
verwendeten Arbeitsregisters" (Originaltext aus "Das grosse MSP430 Praxis
Buch" vom MSP CPU Entwickler persönlich)

Bei Verwendung des Arbeitsregisters R2 - also dem Statusregister - erkennt
die CPU, dass jetzt die ABSOLUTE Adressierungsart gefragt ist. Dazu liest
die CPU Hardware nicht den Inhalt vom SR, sondern eine blanke vierfach Null.
Dazu wird der Index (Die absolute Adresse) addiert (welcher hinter dem
Befehlswort steht), und schon hat man die absolute Adressierungsart.

Zugegeben, diese CPU Internals sind in dem Buch sehr ausführlich
beschrieben, was für normale Assembler Anwender wohl zuviel des Guten ist.
Für CPU core Entwickler aber eine feine Sache.
Die MSP's sind eine einzige Trickkiste, technisch wirklich fazinierend. Aber
scheinbar schreckt das so manche Entwickler ab. Kenne jedenfall ein paar,
die ums Verrecken keine verwenden wollen. Stattdessen greifen sie lieber zu
einem PIC...


Vielen Dank schon mal im Vorraus,
Marc
MIKE
 

Welcome to EDABoard.com

Sponsor

Back
Top