Autor Thema: Arbeitsspeicher und Adressen  (Gelesen 4955 mal)

bscreator

  • Gast
Gespeichert
« 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

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 03. September 2008, 19:10 »
Deine beiden Zeilen greifen auf Segment ds und Offset 0x800 bzw. Offset 0x805 zu.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

bscreator

  • Gast
Gespeichert
« Antwort #2 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

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #3 am: 05. September 2008, 22:37 »
Ja.
lightOS
"Überlegen sie mal 'nen Augenblick, dann lösen sich die ganzen Widersprüche auf. Die Wut wird noch größer, aber die intellektuelle Verwirrung lässt nach.", Georg Schramm

MNemo

  • Beiträge: 547
    • Profil anzeigen
Gespeichert
« Antwort #4 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
„Wichtig ist nicht, besser zu sein als alle anderen. Wichtig ist, besser zu sein als du gestern warst!“

 

Einloggen