Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
1.PodstawyAsemblera
13
adresemlogicznym,złożonymzparyoznaczanejwpostaci:SEGMENT:OFFSET.Procesor
korzystajączeswych„umiejętności”,jakteżz„umiejętności”swoich„kolegówposzynie”,
musiprzekształcićadreslogicznynaadresfizyczny,dlamodelu8086/8088naadres20-bitowy,
dokonującprzeliczeńwedługwzoru:adresfizyczny=10*segment+offset;gdziesegment
oznaczazawartośćjednegozrejestrówsegmentowych,natomiastoffsetzawartośćrejestru
wskazującegoodległośćodpoczątkuwtymsegmencie,10liczbęwzapisieszesnastkowym,
równą16wzapisieszesnastkowym(heksadecymalnym);liczbęczytasięjakojedenisześć,
anieszesnaście.
Intel8086/8088możeodwołaćsiędopamięcioperacyjnejopojemności1MBprocesoryte
mają20wyprowadzeńadresowych.Dlawiększościprzypadkówwynikadresubazowego(adresu
fizycznego)segmentuiprzemieszczenia(offsetu)będzieliczbą20-bitową,jednakżemożesię
zdarzyć,żedlaniektórychwartościadresubazowegoiprzemieszczeniawynikdodaniatychwartości
będzieliczbą21-bitową.GdynaprzykładrejestrsegmentowymawartośćrównąA000H
(szesnastkowo),arejestrwskaźnikowymawówczaswartośćprzemieszczenia(offsetu)równą
0140H,wtedypełnawartośćadresufizycznegowynosićbędzie,10xA000H+0140H=
A0000H+0140H=A0140H=655680D(dziesiętnie)lub10100000000101000000B(dwójkowo).
Wsytuacjigdyrejestrsegmentowy,np.DS,zawieraćbędziewartość0FFFFH,aprzemieszczenie
jestrówne0FFFFH,dodanietychwartościwedługopisywanegowzorudawynik
0FFFF0H+0FFFFH=10FFEFH.Wyniktenjestliczbą21-bitową.
Gdybybyłowięcejliniiadresowychchociażojedną,wtedybyłabymożliwośćzaadresowania
więcejniż1MBpamięcio64KB-17B,gdyż10FFEFH(1114095)-100000H(1048576)=
=65519bajtów=64KB-17B.
WprocesorachIntel8086/8088zewzględuna20-bitowąszynęadresowąbit21jestob-
cinany.Natomiastwwyższychprocesorach,współpracującychz24-czy32-bitowąszyną,
21bitumożliwiazaadresowanietrochęwięcejpamięciniż1MBotewłaśnie64KB-17B.
Wkomputerachzprocesorami80286,80386inowszymiobszar64KB-17Bnazywanyjest
pamięciąwysoką(ang.HMA).
Pamięćpowyżejtej(pamięci)HMA,tzn.powyżej1MB+64KB-17B,nazywasiępa-
mięciąrozszerzoną.Dostaniesiędotejpamięciprzynormalnymbiegupracykomputera
zprocesorem80286inowszyminiejestmożliwe.Abyprocesormógłzaadresowaćpamięć,
musiznaleźćsięwtrybiewirtualnym.16-bitowyrejestrsegmentowyzawierateraznatrzynastu
bitachtzw.selektorsegmentuwskaźnikdo8-bajtowejstrukturyopisującejdanysegment,
tzw.deskryptorsegmentu,2bityzwiązanezprawamidostępudosegmentu,1bitokreśla,
czyówwskaźnikdo8-bajtowejstrukturydotyczytzw.tablicylokalnej,czyglobalnej.Wtym
trybieprocesoruzyskujezawrotnemożliwościadresowaniado4GB.
Procesory32-bitoweskładająswójadreslogicznyzzawartości16-bitowegorejestru
segmentowegoi32-bitowegoprzemieszczeniazawartegowrejestrzeoffsetowym.Mająmoż-
liwośćzaadresowania64TB(TB=terabajt)pamięci.
PamięćkomputeraPC,mimojestadresowanawjednostkach8-bitowych(bajtach),to
jednakwieleoperacjiwykonywanychjestnadłuższychniż1bajtporcjachbitów;tosłowa
(dwabajty),dwusłowa,poczwórnesłowaitp.Jeślidopamięciwpiszemyliczbędziesiętną1234,
tookażesię,żecyfry34będąwystępować„wcześniej”,podmłodszymadresem,niżelicyfry12.
Gdynaprzykładcyfry34występowaćbędąpodadresemDS:0000,tocyfry12znajdąsięobajt
dalej,podadresemDS:0001,chociażwydawałobysię,powinnobyćodwrotnie.Tenrodzaj
przechowywaniainformacjiwpamięcinazywasięprzechowywaniemodwrotnym.Gdypracuje
sięzbajtami,słowamiijeszczedłuższymidanymi,trzebamiećsięnabaczności,byniewprowa-
dzićzamieszaniainiezapomniećoodwrotnymprzechowywaniudanychwpamięci.