Procesor 8086 má segmentovú architektúru pamäti. Je schopný adresovať 1 megabyte pamäti. Tomu odpovedá aj šírka adresovej zbernice 20-bitov. Ako už bolo vysvetlené procesor 8086 používa štyri rôzne segmentové registre: CODE, DATA, STACK a EXTRA.
V segmente CODE (CS) sú uložené strojové inštrukcie, v segmente DATA (DS) sú uložené dáta programu, segment STACK (SS) obsahuje zásobník a konečne segment EXTRA (ES) sa zvyčajne používa pre ďalšie dáta.
Logická
adresa sa skladá z dvoch 16-bitových hodnôt. Z adresy segmentu a offsetu. V reálnom režime sa adresa zložená zo segmentu a offsetu prekladá priamo na adresu fyzickú. Z tejto tzv. logickej adresy sa vytvára 20-bitová fyzická adresa tak, že segmentová časť adresy sa posunie o štyri bity vľavo a k takto vzniknutému číslu sa pripočíta offset. Tým vznikne 20-bitová adresa ukazujúca na konkrétne miesto v pamäti. Ukážeme si to na adrese video pamäti v textovom režime.
adresa segmentu: 1011 1000 0000 0000 0000 - 0B800H (začiatok video pamäti) |
offset: + 0000 0000 0001 1000 - 00018H (posunutie) |
výsledná adresa: 1011 1000 0000 0001 1000 - B8018H (20-bitová fyzická adresa) |
Štandartný zápis logickej adresy je SEGMENT:OFFSET. SEGMENT - je blok pamäti, ktorý má veľkosť 64KB. OFFSET - predstavuje adresu, pomocou ktorej sa môžeme pohybovať v danom segmente, teda v bloku 64KB.
Segmenty sa môžu aj prekrývať. Ide o programy s príponou *.COM. Tento typ programov môže mať maximálne veľkosť 64KB (1 segment). Z toho dôvodu sa všetky segmenty (CODE, DATA, STACK, EXTRA) musia začínať na tej istéj adrese.