kako deluje racunalnik to poglavje morda lazje razumemo ob eksperimentiranju s simulatorjem racunalnika glavni deli racunalnika so centralna procesna enota procesor ali krajse cpe pomnilnik periferne naprave pomnilnik predstavlja skupina naslovljivih pomnilnih lokacij na posameznem celostevilcnem naslovu imamo pri enostavnejsih racunalnikih byte zlog bitov pri boljsih rasunalnikih pa so tako naslovljivi zlogi tudi bistveno daljsi centralno procesno enoto sestavlja vec registrov in aritmeticno logicna enota ale nekateri registri imajo poseben pomen programski stevec kazalec na sklad statusni register tudi drugi si niso povsem ekvivalentni racunalnik zna izvajati preproste operacije tako da iz pomnilnika prebere binarno kodrano instrukcijo aritmeticno logicna enota ugotovi iz kode kaj naj naredi in kje dobi podatke za zahtevano operacijo po izvedbi zahtevane operacije je racunalnik pripravljen na izvedbo naslednje operacije program racunalnika predstavlja pravzaprav zaporedje instrukcij kode teh instrukcij so shranjene v zaporednih lokacijah pomnilnika eden od registrov racunalnikove cpe normalno mu pravimo programski stevec ima nalogo da kaze na instrukcijo ki naj se izvede program torej poteka tako da programski stevec koraka od instrukcije do instrukcije in kaksne so nekatere osnovne instrukcije vsakega racunalnika vpis dane vsebine v nek register ali pomnilno lokacijo prepis vsebine neke lokacije ali registra v nek drug register povecevanje ali zmanjsevanje vsebin registrov ki tako delujejo kot stevci uporabljamo jih lahko za indekse v polja ipd izvedba aritmeticnih operacij med dvema registroma sestevanje odstevanje mnozenje deljenje izvedba logicnih operacij med dvema registroma and or xor druge instrukcije bomo spoznali kasneje s primernimi instrukcijami lahko tudi spremenimo vrednost samega programskega stevca to pa pomeni preskok na drug del programa tak skok je lahko pogojen z rezultatom predhodne operacije kar pomni statusni register procesorja kako cpe ugotovi kaksno operacijo naj izvede in katere podatke naj pri tem uporabi to razbere iz kode instrukcije ta je lahko dolga en pomnilniski zlog byt ali besedo ce pa je to premalo jo lahko dopolnjuje se vec naslednjih zaporednih bytov v pomnilniku format instrukcije instrukcija pomni kodo operacije nacin naslavljanja morebitnega podatka naslov podatka ali podatek kot tak nacini naslavljanja so tudi kodirani tipicno imamo naslednje moznosti registrsko naslavljanje podatek je v nekem registru takojsnje naslavljanje podatek je podaljsan del instrukcije absolutno naslavljanje v podaljsku instrukcije je naslov pomnilniske lokacije s podatkom relativno naslavljanje podatek je odmaknjen za toliko in toliko mest od instrukcije odmik pomnimo v podaljsku instrukcije indeksno naslavljanje naslov podatka doloca vsebina nekega registra kateri pristejemo odmik opomba relativno naslavljanje je podobno indeksnemu razlika je le v tem da si pri indeksnem pomagamo s takoimenovanim indeksnim registrom pri relativnem pa se naslonimo na programski stevec opomba mozne so tudi razlicne kombinacije in dopolnitve vcasih govorimo o indirektnem naslavljanju to lahko pomeni da vzamemo vsebino nekega registra in jo uporabimo kot naslov podatka v pomnilniku v nekaterih primerih lahko pred ali po naslavljanju registre avtomatsko povecujemo ali pomanjsujemo preincrement postdecrement to je zelo uporabno za delo s polji tipicen primer registra ki tako deluje je tudi kazalec na sklad stack pointer sp pregled instrukcij del programski skoki dolgi jmp kratki branch pogojeni bne beq bz skok na podprogram jsr in povratek z njega ret preprecevanje omogocanje programskih prekinitev ei enable interrupt di disable interrupt vhodno izhodne operacije preko inp portnum out portnum povratek domov