Forum: PC-Programmierung Bestimmte Daten im Datensegement adresseiren?


von Tobias Mehrl (Gast)


Lesenswert?

Mit welchen Befehlen kann man bestimmte Werte im Datensegment 
adressieren?
1
DATA    SEGMENT
2
3
array    DW  0,1,2
4
         DW  3,4,5
5
         DW  6,7,8
6
7
DATA    ENDS

Ich hab wie oben gezeigt, Werte im Datensegment deklariert und möchte 
nun bestimmte Werte von diesem Datensegment z.B. in DX schreiben.

Ich kenn einige Adresseierungsarten (und natürlich auch die Befehle):

- Registeradressierung
- unmittelbare Adressierung
- indirekte Adressierung
- Indexadressierung
- Basis indizierte Adressierung
- direkte Adressierung

Ich hab jetzt schon alle möglichen Befehle durch, ber keiner hat 
funktioniert...

Könnt ihr mir sagen wie's richtig funktioniert?

von Udo S. (urschmitt)


Lesenswert?

mov ax,[bx + di]  Lädt in ax den Inhalt der Speicherstelle auf den bx 
(Arrayanfang) plus di (Arrayindex) zeigt.
Müsste so gehen, ist schon etwa 20 Jahre her.

von Tobias Mehrl (Gast)


Lesenswert?

Und woher weiß ich worauf BX und DI zeigt?

Die Daten die ich im Datensegment definiert habe liegen ja irgendwo im 
Datensegment, oder werden diese Daten immer an den Anfang des 
Datensegements geschrieben?

von Regnes (Gast)


Lesenswert?

Du musst bx schon selbst füllen. Der Assembler bietet dir dazu 
Konstrukte an, um die Adresse des Labels zu referenzieren. Je nach Gusto 
(NASM, MASM...) und Architektur (16bit, 32bit...) kann das so aussehen 
(NASM, 32bit, wir laden das 2. Arrayelement in ax):

mov ebx, array
mov di, 1
mov ax, [ebx+di]

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.