Autor Thema: Segmente im Realmode?!  (Gelesen 2895 mal)

BlackSun1102

  • Beiträge: 44
    • Profil anzeigen
Gespeichert
« am: 26. April 2006, 17:22 »
Hi,

Kennt jemand ein Tutorial das Segmente im Realmode gut beschreibt.
Ich weiss das Jedes Segment 64 kb groß ist, die Segmente 16 kb weit auseinander sind und sie sich [Irgentwo] überlappen und das man die Physische Adresse mit Segment << 4 + Offset bildet aber WO überlappen die sich und WAS bringt die komische Adressierung??

Gruß Chris

DarkThing

  • Beiträge: 652
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 26. April 2006, 17:37 »
Hallo,
Hier ist ein RealMode Tutorial von dieser FH Zwickau. Da und auf den nächsten Seiten wird das alles erklärt.

bluecode

  • Beiträge: 1 391
    • Profil anzeigen
    • lightOS
Gespeichert
« Antwort #2 am: 26. April 2006, 17:39 »
Zitat von: BlackSun1102
ch weiss das Jedes Segment 64 kb groß ist, die Segmente 16 kb weit auseinander

Sinds nicht 16Byte abstand? Ich mein "<< 4" = "* 16"...

Zitat von: BlackSun1102
sind und sie sich [Irgentwo] überlappen und das man die Physische Adresse mit Segment << 4 + Offset bildet aber WO überlappen die sich und WAS bringt die komische Adressierung??

Die x86 Platform hat bis zum 286 einen 20bit Adressbus. Man kann also nur mit geeigneter Kombination von 2 16bit Registern 20Bit Adressieren. Also hat sich Intel halt auf

phys. Adresse = Segment << 4 + offset

geeinigt. Damit können 20Bit adressiert werden. Aufgrund dieser Adressierung lässt sich aber eine phys. Adresse meist über sehr viele segment:offset Werte adressieren, also zB:

0x0000:0x0100
0x0001:0x00F0
0x0002:0x00E0
0x0003:0x00D0
0x0004:0x00C0
.
.
.
0x0010:0x0000

sind alles die gleichen physikalischen Adressen (0x100). Aus der Tatsache, dass man eine phyk. Adresse durch versch. Segmente (und Offsets) adressieren kann, folgt das sich die Segmente in einem Abstand von 16byte überlagern, d.h. alle 16byte fängt ein Segment mit 64kb Größe an.

[edit: rofl.... 20bit adressbus...]
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

bitmaster

  • Troll
  • Beiträge: 1 138
    • Profil anzeigen
    • OS-64 = 64 Bit Operating System
Gespeichert
« Antwort #3 am: 26. April 2006, 21:07 »
Je nachdem wie man das sieht können die Segmente max. 64KByte groß sein oder sie sind es. Aber das sie einen vorgegebenen Abstand haben stimmt nicht. Man kann die Basisadresse derSegmente aber an jede 16 Byte (von den 1 MByte) setzen. Heißt also z.B.

mov ax,0
mov ds,ax ds = 0 = Adresse 0

mov ax,1
mov ds,ax ds = 1 = Adresse 16

mov ax,2
mov ds,ax ds = 2 = Adresse 32

usw.

Ach ja, der 286er hat 24 Adressbits und keine 20 Adressbit. Der kann im PM 16 MByte Adressieren.

bitmaster
In the Future everyone will need OS-64!!!

 

Einloggen