mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP: Assemblerproblem


Autor: Alf Jäger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: mikki merten (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: mikki merten (Gast)
Datum:

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

Autor: Haiko Schillert (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht 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".

Autor: Rolf Freitag (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.