Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: bscreator am 03. September 2008, 18:11

Titel: Arbeitsspeicher und Adressen
Beitrag von: bscreator am 03. September 2008, 18:11
Hallo,
wenn ich mit
mov bx,0x800
mov [bx], 4
den Arbeitsspeicher beschreibe, wird dann Segment 0x800 und Offset 0, also Adresse 8000 beschrieben?

wird mit
mov [bx+5],4 das Segment 0x800, Offset 5 beschrieben, also Adresse 8004 ?

Oder hab ich da was vollkommen falsch verstanden?
Vielen Dank, bscreator
Titel: Re: Arbeitsspeicher und Adressen
Beitrag von: kevin am 03. September 2008, 19:10
Deine beiden Zeilen greifen auf Segment ds und Offset 0x800 bzw. Offset 0x805 zu.
Titel: Re: Arbeitsspeicher und Adressen
Beitrag von: bscreator am 04. September 2008, 19:23
Achso...

Und wenn ich ganz speziell, ungeachtet dessen, ob sinnvoll oder nicht, beispielsweise auf Speicheradresse 8000h:2000h zugreifen will, dann muss ich schreiben:
push ds ;vorherige Adresse speichern
mov ax,0x8000
mov ds,ax
mov bx,0x2000
mov [bx],4
pop ds ;vorherige Adresse wiederherstellen

oder?
Thanks
Titel: Re: Arbeitsspeicher und Adressen
Beitrag von: bluecode am 05. September 2008, 22:37
Ja.
Titel: Re: Arbeitsspeicher und Adressen
Beitrag von: MNemo am 06. September 2008, 17:18
du kannst natürlich auch andere Segment-Register verwenden:
z.B.:
mov ax, 0x8000
mov es, ax
mov BYTE ptr [es:0x2000], 4