Forum: Mikrocontroller und Digitale Elektronik MSP: Assemblerproblem


von Alf Jäger (Gast)


Lesenswert?

Hi,

ich habe zwei kleine Probleme mit dem IAR-Assembler:

MOV R6,BLA -> OK
MOV BLA,R6 -> illegal effective Address

Die 'Variaible' BLA ist in der Header-Datei definiert. Da liegt noch 
mein zweites Problem: wie kann ich bzw. der Assembler unterscheiden, ob 
bei

#define BLA  0202h

der Variablen der Wert 202h zugewiesen wird oder ob die Variable an der 
Speicherstelle 202h liegt? Letzteres hätte ich gerne.

Gruß, ALF

von mikki merten (Gast)


Lesenswert?

mov BLA,R6 kann nicht funktionieren, da der MOV Befehl ja ein 
REGISTER<--REGISTER Transfer ist.
um ein Register mit dem Inhalt einer SRAM Adresse zu laden ist
der Befehl: lds R6,BLA bzw. zum speichern der Befehl sts BLA,R6
zu benutzen.

von mikki merten (Gast)


Lesenswert?

falsche Antwort ist nur für AVR und nicht für MSP gültig.

von Haiko Schillert (Gast)


Lesenswert?

Hallo,

das #define... weist natürlich der Variablen den entsprechenden Wert zu. 
(Usermanual Assembler) Der Assembler kann ja auch nicht wissen, ob in 
diesem Bereich RAM o ROM befinden...
Dein mov... scheint in der Tat ein Problem des Assemblers zu sein, im 
MSP430-User Guide steht zumindest, dass ein
mov addr1, addr2  erlaubt ist.
Versuche es doch mal ohne das #define.  Offensichtlich ist der Assembler 
auch nicht das was er sein sollte.

Gruss Haiko

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

#define hat mit Variablen nichts zu tun, der Assembler ersetzt bei 
"#define BLA 0202h" einfach alle Vorkommen von "BLA" mit "0202h". "MOV 
BLA,R6" ist also äquivalent zu "MOV 0202h,R6".

von Rolf Freitag (Gast)


Lesenswert?

Beim MSP kann der ganze Adressbereich (0..ffff) sowohl lesend wie 
schreibend verwendet werden, aber schreiben auf unzulässige Bereiche (z. 
B. WD oder FLASH ohne richtiges Passwort) gibt einen NMI. Ich meine, 
dass es auch dann einen NMI gibt, wenn auch nicht vorhanden Adressen 
geschrieben werden soll.
Vielleicht beschwert sich der Assembler deswegen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.