langer String im Flash

OP Persönliche Seite #932438
Lesenswert?

Hallo zusammen!

Ich möchte in Assembler einen String im Flash abspeichern (ATMega8). Der 
soll aber 'ne länge von ca 200 Zeichen haben.

Ich hab das versucht mit ".db" und das ganze in den Z-Pointer laden, 
aber bei ca. 128 Zeichen hörts auf. Ich schätze mal, dass R31 nicht 
benutzt wird. Kann man das irgendwie aktivieren?


Gruß Steven
#932446
Lesenswert?

Steven W. wrote:
> Hallo zusammen!
>
> Ich möchte in Assembler einen String im Flash abspeichern (ATMega8). Der
> soll aber 'ne länge von ca 200 Zeichen haben.
>
> Ich hab das versucht mit ".db" und das ganze in den Z-Pointer laden,
> aber bei ca. 128 Zeichen hörts auf. Ich schätze mal, dass R31 nicht
> benutzt wird. Kann man das irgendwie aktivieren?
>
>
> Gruß Steven

Wie hast du das denn geladen?

So hier?

ldi ZL, low(pointer)
ldi zH, high(pointer)
?
#932481
Lesenswert?

Hast du da mal Debug drüberlaufen lassen?

Eventl. eine '0' durch einen Zeilenumbruch o. Ä. im string?

Der Sprung zu TextOut1 funktioniert nicht, da TextOut1 nicht vorhanden 
ist.
Und warum lädst du den Pointer schon so zeitig? Nicht, dass dir 
irgendein Befehl davor R30/31 überschreibt.
Du machst "push Stelle". Wo ist das zugehörige POP? Stacküberlauf???
Und wo ist der Rücksprung aus TextOut2?

Gibts auch ne Main-Loop?
OP Persönliche Seite #932497
Lesenswert?

Hab jetzt Textout mit eingefügt (Habs vergessen...)

nach 127 Zeichen ist zu Ende. Eine Null oder ein Zeilenumbruch hab ich 
nicht im String

Ach Gott!!! ich habe IN geschrieben innerhalb des Strings an dem liegt 
es, denn es wird vom Compiler als Befehl erkannt (blau markiert).
Wie kann ich das umgehen?

Mir fällt gerade ein, dass ich folgendes machen könnte

db. "ein haus i","n Deutschland",0

gibts da noch was anderes?
Angehängte Dateien:
#932513
Lesenswert?

Steven W. wrote:
> Fehlalarm!!!
>
> Das mit dem IN geht nicht.
>
> Ich kann nicht Debuggen auf'm ATmega8, oder?
>
> Main Loop gibts ja
>
> pop stelle ist im TextOut1, sorry!

Liegts an dem IN?
Weiß ja nicht, was für nen Assembler du verwendest.
Probier mal
.DB @"Dein String mit IN", 0

bzw. das ganze mal mit einfachen Anführungszeichen.

Debuggen geht höchstens über deine Entwicklungsumgebung.
Gast #932516
Lesenswert?

> als Befehl erkannt (blau markiert).
also dem compiler ist die Farbe ziemlich egal, das ist bloss eine 
Eigenart der IDE - ich denke der compiler versteht schon was du von ihm 
willst auch wenn es blau ist.
#932521
Lesenswert?

Steven W. wrote:
>>Debuggen geht höchstens über deine Entwicklungsumgebung.
> Soweit ich weiß, kann mann den ATMega8 nicht debuggen.
>
> Ich probiers mal aus, ich poste dann morgen weiter.
>
> Danke schonmal!
>
> Gruß Steven

Das ist korrekt.
Ich meinte eher ein offline-Debuggen.
Also ich mach sowas über VMLAB.
Da wird quasi der Controller simuliert.
OP Persönliche Seite #933215
Lesenswert?

Morgen allerseits!

@Micha
Simulieren, sags doch gleich...

Laut AVR-Studio werden die 200 Zeichen im Flash komplett abgelegt. 
(Memory Window)

Am "in" liegts definitiv nicht, das wird warscheinlich wirklich nur ne 
Stringerkennung vom AVR-Studio sein.

Mein Problem: Es werden nur 127 Zeichen ausgegeben nach dem 128sten ist 
schluss, obwohl es laut AVR-S. im Flash steht.

Kann man überhaupt mehr als 127 Zeichen (auf einmal) Speichern?
Sollte doch gehen oder?

Gruß Steven

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