Forum: Mikrocontroller und Digitale Elektronik asm: ringspeicher im ROM


von Oz z. (ozzy)


Lesenswert?

Moin,

ich habe im ROM 256 Byte mit Daten stehen:
1
Daten: .db 0x01, 0x10, ...
Durch diese Daten möchte ich nun immer wieder durchgehen, und wenn ich 
das Ende erreicht habe, wieder vorne anfangen. Doch wie mache ich das am 
Besten?
1
cpi ZL, low(Daten<<1+128)
2
brne ...

Geht das so? Irgendwie fällt mir gerade das Simulieren etwa schwer...

Vielen Dank im Voraus für Eure Hilfe!

von Karl H. (kbuchegg)


Lesenswert?

Setz dir einfach nach den Daten noch ein Label und wenn der Z-Pointer 
dessen Adresse erreicht hat, setzt du ihn (den Z-Pointer) zurück auf 
Daten, andernfalls inkrementierst du ihn.

von spess53 (Gast)


Lesenswert?

Hi

Leg die Daten auf eine 'runde' Adresse ($100,$200;$300...). Und dann nur 
ZL weiterzählen.

MfG Spess

von Michael U. (amiga)


Lesenswert?

Hallo,

lege die Daten mit .org auf eine 256 Byte Grenze und zähle nur ZL im 
Kreis...

Gruß aus Berlin
Michael

von Oz z. (ozzy)


Lesenswert?

Hm, ok, das wäre natürlich eine Lösung. Aber was mache ich, wenn die 
Daten größer werden als 256?

von Peter D. (peda)


Lesenswert?

1
  ldi zl, low(2 * array)
2
m1:
3
  ldi zh, high(2 * array)
4
m2:
5
  lpm r0, z+
6
  cpi zl, low(2 * array)
7
  brne m2
8
  rjmp m1


Peter

von Peter D. (peda)


Lesenswert?

Christoph O. schrieb:
> Aber was mache ich, wenn die
> Daten größer werden als 256?

Auch zh vergleichen.


Peter

von Oz z. (ozzy)


Lesenswert?

Super, vielen Dank, hat alles geklappt; manchmal steht man echt mit so 
einfachen Dingen auf dem Schlauch...

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