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
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?
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.