Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
1.PodstawyAsemblera
1.4.
Oużytecznościprogramów
11
Wszystkieprocesoryod8088/8086doPentiumnależądojednejrodzinyproceso-
rówiaPx86.ProgramistówpiszącychwAsemblerzeinteresujetylkojednarzecz,amianowicie,
czyasembleroweprogramy,którenapisanodlaprocesora8088,będąrówniedobredlaproceso-
raPentium?Tak,programynapisanedlapierwszegoprocesora8088będądziałaćnanajnow-
szychmaszynach,aletylkowsensieprogramuźródłowego.Jednakże,byprogramytedałysię
uruchomićnatychnajnowszychmaszynach,trzebaje,przyużyciuodpowiednichprogramów
tłumaczących,ponownieprzetłumaczyć.
1.5.
Procesory,pamięćijejadresowanie;przechowywanie
odwrotne
Procesor,wykonującprogramy,sięgapoichkodytam,gdziesięoneznajdują,toznaczy
dokomórekpamięci.Musionniczymdoręczyciellistówdokładnieznaćadresżądanego
miejsca,bypobraćprzesyłkędonadanialubtylkoprzekazać.Procesor,jakogłównyzarząd-
ca,musiumiećkomunikowaćsięzpamięcią.Model8086zostajepołączonyzpamięciądwu-
dziestoma„drutami”,poktórychbiegnądaneorazadresykomórekpamięciiurządzeń.Po
jednym„drucie”możeprzesłaćon0albo1,awięcprzydwudziestu„drutach”możeuczynićto
na2
2O=1048576możliwości.Wykorzystującwszystkiekombinacjeustawień0i1na20
„drutach”,możnajednoznaczniewskazać(zaadresować)1048576(1MB1megabajt)
komórekpamięci.
Czyoznaczato,asemblerowyprogramista,wkładającdanądopamięcibądźwskazując
ją,musizakażdymrazemwiedziećinieustannieśledzić,gdziewdanejchwiliznajdujesięona
wpamięci?Amożejestjużtamcośinnego,np.kodsystemuoperacyjnegolubprogramy
rezydentne,taksamoważnejakkodsystemuoperacyjnego?Agdybynawetprogramistawie-
dział,którakomórkapamięcijestwolnaichciałtamprzesłaćdaną,tojakmakomórkę
zaadresować?Czywolnomuwpisaćbezwzględnąwartośćkomórkiwpostaci:prześlijdo
123786komórkipamięcidaną1-bajtową?Takibezwzględnyzapisadresukomórkibyłby
nieprawidłowymzapisem.Abyprocesor,aprzedewszystkimprogramista,mogliwzględnie
łatwoporuszaćsiępo1MBpamięci,podzielonopamięćna16segmentów,zktórychkażdy
zawierapo65536(64KB)jednobajtowychkomórek.Adresdowolnejkomórkipamięciskłada
sięterazzdwóchczęścinumerusegmentuipołożeniakomórkiwtymsegmencie.Wprogra-
mieasemblerowymzapiszemytonastępująco:prześlijdanądosegmentunr10,awtym
dziesiątymsegmenciedokomórkinr32456.Gdybytakfaktyczniebyło,tonadalnierozwią-
zanoby„problemu”adresowaniamożliwieprosto,takjakoczekiwalibytegoprogramiści.
Programistaponapisaniukilkuprogramówmiałbyserdeczniedosyćwszelkiegoadresowa-
nia,niemówiącjużosamejnaucejęzykaizłożonościprogramowania,gdybyjeszczenadnim
zawisłataka„czarnachmura”niczymmieczDamoklesa.Procesortoniezwykłyrygorysta.Usta-
wiawpamięciwszystkotak,jakbyćpowinno.Wszystkomapodkontrolą.Gdyspróbujemymu
cośnarzucićnasiłę,tonapewnotegonieprzyjmieiwtakichsytuacjachzamrozicałąmaszynę,
zawieszającjejdziałanie.Niemawówczasinnegosposobu,jakzrobićmaszynie„zimnyprysz-
nic”wpostaciRESET.AleczęstyRESETmożemaszyniepoważniena„zdrowiu”zaszkodzić.
Wewnątrzprocesorawbudowanychzostałokilka(kilkanaście)rejestrów.tobardzoszybkie
elementyelektronicznemającezdolnośćpamiętania.Tylkoniektórymznichmożnanarzucić
swojezdanie,innerejestrypilniesłuchająswegoprocesora.Nawetasemblerowyprogramista,
piszącypodwskazanyadrespamięci,pełnitylkorolęspecyficznegoskazańca,skazanegonataki