Av klart st�rst intresse n�r det g�ller BIU:n �r att i denna del
av processorn finns de viktiga segmentregistren. Det �r med hj�lp
av dessa som man kan klara av att adressera 1 MByte minne.
F�r att hantera en 20-bitars adressbuss utan ett 20-bitars
register har man tillgripit principen med att segmentera minnet.
Detta inneb�r att man delat in minnet i mindre delar som pekas ut
av segmentregistren. Man delar helt enkelt in minnet i delar, d�r
varje del h�gst kan omfatta 64 KByte minne.
Detta inneb�r att stora program skrives n�got annorlunda �n vad
vi kanske varit vana vid, n�r det g�ller assemblerprogrammering
n�mligen s� att vi fr�n b�rjan skiljer p�:
DATAAREA, PROGRAMKODSAREA och STACKAREA.
Det inneb�r att vi efter en speciell syntax talar om mellan vilka
gr�nser sj�lva *programkoden* f�r v�rt program �terfinnes. Vidare
beskriver vi omr�det f�r *dataarean* samt omr�det f�r
*stackarean*. Syntaxen f�r detta skall vi �terkomma till.
Detta med segmentering brukar ofta anv�ndas som argument d� man
s�ger att assemblerprogrammering p� INTEL:s nyare processorer �r
sv�r. Men om man bet�nker att segmentering kan liknas vid vilken
indelning som helst av en st�rre enhet i mindre mera
l�tthanterliga s� blir denna indelningsprincip mindre
sv�rf�rst�elig.
L�t oss se p� indelningen i en telefonkatalog. Som bekant delas
landet in i riktnummeromr�den, som i sin tur delas in i
abonnemang.
Om vi nu antar att abonnemangsnumret 123456 i 035-omr�det innehas
av Andersson och abonnemangsnumret i 123456 i 044-omr�det innehas
av Pettersson s� f�rst�r vi analogin med segmentering.
F�r att n� kontakt med Andersson sl�r vi f�rst riktnumret (035)
och sedan abonnemangsnumret (123456). Det motsvaras i ett
segmenterat minne av att vi f�rst pekar ut segmentet och sedan
adressen inom aktuellt segment. Den sistn�mna adressen kallas f�r
*offset-adressen*.
Riktnumret motsvarar s�ledes inneh�llet i aktuellt
segmentregister, medan abonnemangsnumret motsvarar inneh�llet i
IP-registret = Offset-adressen.
HUR ADRESSERINGEN FUNGERAR
--------------------------
Man brukar anv�nda nedanst�ende bild f�r att illustrera hur en
minnescell pekas ut av en 80(2)86 pocessor.
Via en intern process bildas s�ledes den fysiska adressen enligt:
(Den fysiska 20-bitars adressen kan beskrivas med ett 5-teckens
hexadecimalt tal XXXXXh)
Normalt anv�nder vi oss inte av den kompletta 5-teckensadressen
utan anger en adress enligt formen:
SSSS:OOOO
Detta �r helt enkelt ett annat skrivs�tt f�r det tidigare n�mnda,
d�r SSSS �r begynnelseadressen i aktuellt segment medan OOOO �r
inneh�llet i IP-registret dvs Offset-adressen.
Om vi nu antar att vi �nskar ange minnescell 8A2Fh i segentet som
t�nkas b�rja i adress 4000h s� skrives denna adress l�mpligen
som:
4000:8A2E (Fys. adress: 4000 * 10 + 8A2E = 48A2E)
Men rent matematiskt st�r ett otal m�jligheter till buds n�r det
g�ller att ange denna fysiska adress. Nedan visas n�gra exempel:
Denna teknik att bilda den kompletta fysiska adressen inneb�r
vidare att ett segment m�ste omfatta minst 10h = 16 bytes
minnesceller.
L�t oss illustrera det hela med ett exempel:
Antag att segment 0 b�rjar i adress 00000 = 0000:0000.
F�rsta adressen i n�sta segment, segment 1, kan d�rvid inte b�rja
innan adress 0001:0000, dvs p� den fysiska adressen 00010.
Man anv�nder termen *paragraf* i betydelsen 10h (16d) bytes.