Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
2.Architekturaklasycznychkomputerów
11
argumenty.Dwiepierwszejedynkidrugiegobajtuwskazująnato,żeargumentyznajdują
sięwrejestrachprocesoraiżedodrugiegoznichmazostaćzapisanywynik.Pozostałebity
określająterejestry(pierwszymjestrejestrCLbity001,drugimjestrejestrAbity
000).Wynik(liczba7)zostaniewpisanydodrugiegorejestru(dorejestruA).Ostatni
rozkazjestteżrozkazemdwubajtowym.JesttorozkazprzesłaniazawartościrejestruAdo
urządzeniawyjściowegoumieszczonegopodadresem10101010(drugibajttejinstrukcji).
Wwynikudziałaniategoprogramudrukarkawydrukujeliczbę7.
Potymogólnymopisiewartoprzyjrzećsięniecodokładniejkiedyijakposzczególne
blokiprocesorauczestnicząwwykonywaniutegoprogramu.Inicjalizacjawykonaniapro-
gramupoleganaodpowiednimzaładowaniulicznikarozkazówLR.Należywpisaćdo
niegotakąwartość,którawskażemiejscewpamięci,gdzieznajdujesiępierwszyrozkaz
programu.Wprzykładziejesttoadres00000000.Następujewtedyfazaodczytaniarozkazu
zpamięci.Nazywasięonafaząpobraniarozkazu.Wfazietejodczytanyzpamięcikod
rozkazuzostajezapisanydorejestrurozkazów(rejestrRR).Zawartośćtegorejestrujest
przesyłanadoukładudekodera,którymauruchomićodpowiedniproceswykonaniatego
rozkazu.Dekodowanierozkazupolegagłównienarozpoznaniu:„corozkazmazrobić?”
(jakatomabyćoperacja)i„jakmazrobić?”(jakieargumentydanejoperacji).Pierwszy
rozkaznaszegoprogramumazazadanieprzesłanieargumentudorejestruCL.Jedno-
cześniewskazujeon,żeargumentemtymbędzienastępnybajtkoduprogramu.Dlatego
następujeterazdrugafazawykonaniategorozkazu,tj.pobranieargumentu.Licznikrozka-
zówzostajezwiększonyo1iodczytanazostanienastępnakomórkapamięci.Poskom-
pletowaniucałejinstrukcjinastąpitrzeciaiostatniafaza,zwanafaząwykonaniarozkazui
wówczasargumentoperacji,zgodnieztreściąrozkazu,zostanieprzesłanydorejestruCL.
Ponieważnatymzakończyłosięwykonywanietegorozkazu,togdylicznikrozkazów
zostanieponowniezwiększonyo1iodczytanazostaniezawartośćnastępnejkomórki
pamięci,tobędzieonatraktowanajakokodrozkazuizostanieprzesłanadorejestru
rozkazów.Wtymprzypadkudekodowanietegorozkazupokaże,żejesttorozkazprze-
słaniadorejestruAargumentu,któryznajdujesięwpamięci,aadreskomórkipamięci
znajdujesięwkodzieprogramuwnastępnychdwóchbajtach.Dlategopofaziepobrania
kodurozkazunastąpifazapobraniaadresuargumentu.Zawartośćlicznikarozkazówzo-
staniezwiększonao1iodczytanyzostaniepierwszybajtadresu,anastępniezawartośćLR
zostaniejeszczerazzwiększonao1iodczytanydrugibajtadresu.Wtedynastąpifaza
pobraniaargumentu.Dwabajtyprzesłanebędąnawejścieadresowepamięciiodczytany
zostanieargumenttegorozkazu.Potemnastąpiostatniafazawykonaniategorozkazu,tj.
przesłanieargumentudorejestruA.Pozwiększeniuzawartościlicznikarozkazówo1
odczytanazpamięcizawartośćkomórkipamięcibędzieinterpretowanajakorozkaz.Kod
tegorozkazu(00000000)wskazuje,żejesttorozkazdodawaniazawartościdwóch
rejestrów.Którezrejestrówprocesoraprzechowująargumentyoperacjiwskazujenastępny
bajtkoduprogramu.Dlategonastępujezwiększeniezawartościlicznikarozkazówo1ibajt
tenzostanieodczytany.Potychdwóchodczytachpamięcizakończonofazępobrania
rozkazuinastępujefazapobraniaargumentów.Drugibajtrozkazuwskazujenato,że
argumentamirejestryCL(bity001)iA(bity000),awynikmazostaćprzesłanydo
drugiegorejestru(rejestruA).Wfaziewykonaniarozkazuzawartościtychdwóchrejestrów
zostanąpodanenawejściaukładuALU,awynikoperacjizostanieprzesłanydorejestruA.
Pozwiększeniuzawartościlicznikarozkazówo1,nastąpifazapobraniaostatniegoroz-