gulliver
26.06.2007, 16:07
Hallo
Wie kann ich eine Adressierung mit Offset bewerkstelligen?
Optimal und kurz wäre eine Adressierung mit Displacment. Was ist das Displacment eigentlich? Kann ich dafür nur eine Zahl einsetzen oder geht es auch über eine Variable? Eine Zahl ist etwas festes und für meinen Zweck nicht brauchbar.
Letztendlich sind es doch alles nur Zahlen für den Prozessor.
Mein Problem:
.dseg
Modulblock:
Prog1: .byte 4 ;jeweils 4 Byte reservieren
Prog2: .byte 4
Prog3: .byte 4
...
Nachdem die Werte eingetragen wurden, sieht es im Speicher dann z.B. so aus:
ab Adr. Prog1: 0 1 2 255 (entsprechend r,g,b,255)
ab Adr. Prog2: 1 2 0 255
ab Adr. Prog3: 2 1 0 255
...
Auf den Blockanfang möchte ich einen festen Zeiger haben (Modulblock). Dies ist kein Thema.
Nun habe ich einen Zeilen- und einen Spaltenoffset. Diese werden addiert und sollten in ldd R,Z+q als Displacment q dienen.
Bei allen anderen Ladebefehlen würde sich die Adresse jedesmal ändern, da ich den Offset jedesmal hinzuaddieren müßte. Dagegen ändert sich die Adresse bei dem Displacmentbefehl nicht, es wird nur mit Offset zugegriffen. Darum erscheint mir dieser am geeignetsten.
Nun hatte ich schon verschiedene Möglichkeiten probiert und komme auf keine kurze Lösung. Der einzig gangbare Weg war bisher die Offsets zu addieren und diese Summe anschließend zur Grundadresse hinzuaddieren. Dazu mußte diese vorher immer ge'push't und nach dem Zugriff wieder ge'pop't werden.
Gibt es nur diesen Weg oder kann man dies noch anders hinkriegen?
mfg Roger
Wie kann ich eine Adressierung mit Offset bewerkstelligen?
Optimal und kurz wäre eine Adressierung mit Displacment. Was ist das Displacment eigentlich? Kann ich dafür nur eine Zahl einsetzen oder geht es auch über eine Variable? Eine Zahl ist etwas festes und für meinen Zweck nicht brauchbar.
Letztendlich sind es doch alles nur Zahlen für den Prozessor.
Mein Problem:
.dseg
Modulblock:
Prog1: .byte 4 ;jeweils 4 Byte reservieren
Prog2: .byte 4
Prog3: .byte 4
...
Nachdem die Werte eingetragen wurden, sieht es im Speicher dann z.B. so aus:
ab Adr. Prog1: 0 1 2 255 (entsprechend r,g,b,255)
ab Adr. Prog2: 1 2 0 255
ab Adr. Prog3: 2 1 0 255
...
Auf den Blockanfang möchte ich einen festen Zeiger haben (Modulblock). Dies ist kein Thema.
Nun habe ich einen Zeilen- und einen Spaltenoffset. Diese werden addiert und sollten in ldd R,Z+q als Displacment q dienen.
Bei allen anderen Ladebefehlen würde sich die Adresse jedesmal ändern, da ich den Offset jedesmal hinzuaddieren müßte. Dagegen ändert sich die Adresse bei dem Displacmentbefehl nicht, es wird nur mit Offset zugegriffen. Darum erscheint mir dieser am geeignetsten.
Nun hatte ich schon verschiedene Möglichkeiten probiert und komme auf keine kurze Lösung. Der einzig gangbare Weg war bisher die Offsets zu addieren und diese Summe anschließend zur Grundadresse hinzuaddieren. Dazu mußte diese vorher immer ge'push't und nach dem Zugriff wieder ge'pop't werden.
Gibt es nur diesen Weg oder kann man dies noch anders hinkriegen?
mfg Roger