Große Tabelle ".db" (Assembler)

Gast #211282
Lesenswert?

Hallöchen,

eine große Tabelle (800 Werte) für eine Sinus-Darstellung
möchte ich im SRAM hinterlegen.

Momentan habe ich das Problem so gelöst (mit Teilung der Tabelle):

SINUS_WERTE_TEIL_1:
.db 127,128,129,... ,0
SINUS_WERTE_TEIL_2:
.db 127,126,125,... ,0

Nun meine Frage an Euch. Gibt es eine bessere Möglichkeit, die 800
Werte zu hinterlegen, ohne die Tabelle zu teilen? Denn die Zeilenlänge
ist leider begrenzt.

Danke

Bernhard
#211286
Lesenswert?

Wenn du darauf achtest, dass die Anzahl der Einträge pro Zeile
geradzahlig ist, dann geht das auch ohne jede Zeile mit 0
abzuschließen. Der Abschluss mit 0 ist eigentlich nur für Strings
(Endekennung) erforderlich. Die 0 wird aber vom AVR-Assembler
automatisch hinzugefügt, falls die Anzahl der Bytes ungeradzahlig ist.

Ich mache öfters mal große Tabellen auf diese Art (8 oder 16 Bytes pro
Zeile), wobei der ASM-Quelltext (der Tabelle) oft von VB6-Programmen
generiert wird.

...
Gast #211287
Lesenswert?

Danke für Eure Tipps.

Hab's gerade mal getestet, funktioniert wunderbar.

Und so sieht es jetzt aus:

SINUS_WERTE:
.db 127,128,129,...      <Anzahl muss geradzahlig sein !!
.db 127,126,125,... ,0

Der Zugriff erfolgt dann mittels LPM über X, Y oder Z-Register.

Danke nochmals und schönes WE

Gruß

Bernhard

PS: Ich generiere auch gerne den Tabellen-Code in VBA,
    spart bei großen Tabellen viel Zeit
#211288
Lesenswert?

Die Abschluss-0 brauchst du nur bei Texten, deren Ende an der 0 erkannt
wird. Bei deiner Sinustabelle bestimmt doch der Pointer den
"Zählumfang", da wird keine Ende-Kennung benötigt.

Nunja, für VBA bin ich zu blöd, ich nutze VB6 oder auch mal das gute
alte QBASIC (QB 4.5)...

Mir ist aber neu dass LPM mit X und Y auch geht. Ich mach' das immer
nur mit Z...

;-)

...

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