Aus historischen Gründen ist der Speicher des PC in sog. Segmente eingeteilt. Für ein Segment stehen 2 Byte zur Adressierung zur Verfügung, jedes Segment hat daher einen Adressraum von 65536 = 64 KB. Die Adressen innerhalb eines solchen Segments werden als Offset bezeichnet. Für Segmente verwendet man ebenfalls ein DWord = 2 Byte. Es ergibt sich daher die Möglichkeit 64KB Segmente zu Adressieren

Die Adressen werden dabei im sog. hexadezimalen Format angegeben - da die Angabe als Dualzahlen doch etwas verwirrend wäre. Die Umrechnung zwischen Dualzahlen und Hexadezimalzahlen ist - wie wir sehen werden - eben besonders einfach auszuführen. Aus den beiden Adressen wird dann eine im 1. MB des Speichers liegende physikalische Adresse gebildet: 

Unter Windows wird eine 32 Bit nach folgendem Muster gebildet:

Über einen Selektor wird ein Deskriptor gewählt der eine physikalische Adresse in der Code Page Tabelle festlegt.

Für das Zahlenformat wird die Basis 16 verwendet - damit kann man jedes Halbbyte durch eine Hexziffer darstellen :

0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 1 2 3 4 5 6 7 8 9 A B C D E F

Umrechnen kann man jetzt indem man die Dualzahl in Halbbyte einteilt und diese durch die passende Hexziffer ersetzt:

11110001101011101 = 0001 1110  0011  0101 1101 = $1E3AD oder 1E3ADh

Ein aktuelles Registerabbild kann man im Dos Fenster mit debug  -r anzeigen ( verlassen mit q ) 

Zunächst der aktuelle Registerzustand

Microsoft(R) Windows 98
(C)Copyright Microsoft Corp 1981-1999.

C:\WINDOWS>debug
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1676 ES=1676 SS=1676 CS=1676 IP=0100 NV UP EI PL NZ NA PO NC
1676:0100 DEBE1AD4 FIDIVR WORD PTR [BP+D41A] SS:D41A=00
-

Mit d kann man Speicherinhalte ausgeben:


C:\>debug command.com
-r
AX=0000 BX=0001 CX=7872 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=169C ES=169C SS=16AC CS=16AC IP=0100 NV UP EI PL NZ NA PO NC
16AC:0100 06 PUSH ES
-d
16AC:0100 06 17 BE 1B 02 BF 1B 01-8B CE F7 D9 FC B8 1B 01 ................
16AC:0110 06 50 06 B8 18 01 50 CB-F3 A4 CB E9 32 21 7A C9 .P....P.....2!z.
16AC:0120 20 00 00 B4 19 00 00 92-16 00 00 B4 1D 00 00 00 ...............
16AC:0130 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
16AC:0140 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
16AC:0150 00 00 00 00 00 00 00 00-E8 6E 00 1E 0E 2E FF 2E .........n......
16AC:0160 1F 01 FB E8 63 00 1E 0E-2E FF 2E 23 01 FB E8 58 ....c......#...X
16AC:0170 00 1E 0E 2E FF 2E 27 01-FB E8 4D 00 1E 0E 2E FF ......'...M.....

-
Rechne die Speicheradressen in eine physikalische Adresse um !