mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Assembler-Frage: Zuweisung konstanter editierbarer Werte


Autor: Иван S. (ivan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bin dabei eine LCD-lib für ZiLOGs eZ8 zu schreiben und bin auch 
schon so gut wie fertig. Dabei bin ich jedoch auf ein bis dato nicht 
lösbares Problem gestoßen. Ich möchte eine Zuweisung eines konstanten 
Werts erreichen, der vom Benutzer jedoch editierbar sein soll. Konkret 
möchte ich folgendes in einem .inc-file machen:

LCD_BUSY_DELAY VAR #%07

Dann koennte ich im Apllikationsfile (.asm) nämlich einfach folgendes 
schreiben:

LDX R11,LCD_BUSY_DELAY

Der Assembler stört sich jedoch an der Zuweiseung dieses konstanten 
Werts.
Folgendes funktioniert: LCD_BUSY_DELAY VAR %07FA
Hier wird eine Speicheradresse zugewiesen. Bei dieser Möglichkeit müsste 
ich im Applikationsfile manuell mit LDX LCD_BUSY_DELAY,#%07 zuweisen.

Dies ist jedoch nicht Sinn der Sache, da LCD_BUSY_DELAY schon im 
.inc-file editierbar sein soll. Ubrigens funktioniert es auch mit der 
Direktive EQU nicht.

Ich bin mir im klaren darüber, dass hier kaum jemand den eZ8-Assembler 
verwendet. Trotzdem hoffe ich auf brauchbare Antworten, da das Problem 
auch auf anderen Architekturen auftreten koennte.

Gruß, Iwan

Autor: Naja (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was uns allen vielleicht helfen könnte, dass Problem zu verstehen: Was 
hindert denn einen Benutzer den Wert zu editieren?

Irgendwie erschliesst sich mir das Problem nicht, was aber sehr 
wahrscheinlich daran liegt, das ich den eZ8 Assembler nicht kenne.

Aber da Du EQU erwähnst, was (hoffentlich) überall ähnlich funktinieren 
könnte: Warum könnte denn der Benutzer den Wert nach dem EQU nicht 
ändern?

Oder geht es um eine Datei, die zur Laufzeit eingelesen werden soll?

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nur Spekulation:

Vielleicht kann man bei VAR oder EQU nur einen untypisierten Wert 
definieren und nicht gleichzeitig festlegen was er bedeutet. Also nicht 
festlegen ob es eine Adresse oder ein Zahlenwert ist.

LCD_BUSY_DELAY VAR %07

LDX R11,#LCD_BUSY_DELAY

Autor: Иван S. (ivan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gast schrieb:
> Nur Spekulation:
>
> Vielleicht kann man bei VAR oder EQU nur einen untypisierten Wert
> definieren und nicht gleichzeitig festlegen was er bedeutet. Also nicht
> festlegen ob es eine Adresse oder ein Zahlenwert ist.

So scheint es mir auch.

> LCD_BUSY_DELAY VAR %07
> LDX R11,#LCD_BUSY_DELAY

Obiges funktioniert nämlich einwandfrei. Das hilft weiter, danke!

Naja schrieb:
> Was uns allen vielleicht helfen könnte, dass Problem zu verstehen: Was
> hindert denn einen Benutzer den Wert zu editieren?

Die nicht vorhandene Möglichkeit LCD_BUSY_DELAY zu initialisieren. Wo 
kein Wert zugewiesen werden kann, kann auch nichts editiert werden.

> Aber da Du EQU erwähnst, was (hoffentlich) überall ähnlich funktinieren
> könnte: Warum könnte denn der Benutzer den Wert nach dem EQU nicht
> ändern?

Da ähnlich wie bei VAR nur "untypisierte" Werte definiert werden können. 
Ich muss daher den von Gast geschriebenen Weg gehen.

Danke, Iwan

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.