Eine genauere Erläuterung deines Vorhabens wäre ganz nützlich. So kann ich dir nur erklären wie ein Ringspeicher funktioniert:

Ich hab das mal bei einem RS232-Buffer so gemacht, dass ich einen Start- und einen Endpunkt definiert hab, und dann noch einen Lese-Pointer und einen Schreib-Pointer.
Beim schreiben muss der jwlg. Wert an die Stelle des Schreib-Pointers geschrieben werden (logisch...). Vorher muss überprüft werden, ob der Speicher nicht schon voll ist. Das kann man machen, indem man schaut, wo sich der Lese-Pointer gerade befindet. Danach wird der Schreib-Pointer halt um 1 inkrementiert und dann muss noch getestet werden, ob der Pointer über das Ende des Speicher hinausgelaufen ist. Wenn ja muss er auf den Anfang des Speichers gesetzt werden.
Beim Lesen muss erstmal getestet werden, ob's überhaupt was zu lesen gibt. Das kann wieder durch Vergleich von Schreibe- und Lesepointer erfolgen. Dann muss der Wert von der Adresse wo der Pointer hinzeigt gelesen werden und der Pointer um 1 erhöht werden. Wenn das Ende des Speichers erreicht wird muss er auch auf den Anfang gesetzt werden.

Ich kann den Code bei Interesse gerne posten, ist allerdings nicht mit allen Speichergrößen- und Adressen stable. Sollte also höchstens dazu dienen sich einen groben Überblick zu verschaffen.

Gruß,
Dennis