Assembler-Frage: Zuweisung konstanter editierbarer Werte

OP #1482941
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
Gast #1482951
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?
Gast #1482952
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
OP #1483083
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren