UNIVERZITET U SARAJEVU
Elektrotehnički fakultet Sarajevo

Odsjek za računarstvo i informatiku
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

PROGRAMSKA ORGANIZACIJA RAČUNARA

 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
Sarajevo, maj 2001.                                                                         mr. Idriz Fazlić

Sadržaj:

            Uvod .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..    1
1.         Predstavljanje podataka. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..     4
1.1       Brojni sistemi. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..      4
1.1.1    Konverzije između brojnih sistema. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..        5
1.1.2    Heksadecimalni i oktalni sistemi.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..        6
1.1.4    Formati brojnih sistema.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..     8
1.2       Organizacija podataka. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..    9
1.2.1    Biti. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..   9
1.2.2    Nibli. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..    10
1.2.3    Bajti.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..   10
1.2.4    Riječi.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..     10
1.2.5    Duple riječi.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..     11
1.3       Osnovne operacije .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..     10
1.3.1    Logičke operacije  .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..     12
1.3.2    Operacije nad bitima.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..      13
1.4       Predstavljanje negativnih brojeva. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..       14
1.4.1    Predznak i vrijednost .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..     14
1.4.2    Komplement jedan .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..     15
1.4.3    Komplement dva .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..    15
1.5       Pomjeranje i rotiranje bita. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..     17
1.6       Realni brojevi.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..     18
2.         Osnovni elementi računarskih arhitektura. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..       19
2.1       Bazne komponente sistema.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..     19
2.1.1    Sistemska sabirnica.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..     20
2.1.1.1 Podatkovna sabirnica.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..     20
2.1.1.2 Adresna sabirnica.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..    20
2.1.1.3 Kontrolna sabirnica.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..     21
2.1.1.4 U/I sabirnica. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..    21
2.1.2    Memorijski podsistem. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..     21
2.2       Sistemsko vrijeme.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..    23
2.2.1    Sistemski sahat .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..    23
2.2.2    Pristup memoriji i sistemski sahat: .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..       24
2.2.3    Stanja čekanja.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..   25
2.2.4    Keš memorija.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..    25
2.3       U/I (Ulaz/Izlaz).. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..     26
3          Instrukcije naspram podataka.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..     29
3.1       Instrukcije.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..    29
3.1.1    Formati aritmetičkih izraza.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..       30
3.1.2    Veličine instrukcija.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..      31
3.1.3    Tipovi adresnih mašina.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..      32
3.1.3.1 Troadresne mašine .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..     32
3.1.3.2 Dvoadresne mašine.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..     32
3.1.3.3 Jednoadresne mašine .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..    32
3.1.3.4 Nuladresne mašine .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..     33

background image

6.4.4    Deklarisanje varijabli realnih brojeva REAL4, REAL8 i REAL10.. .. .. .. ..         72
6.5       Deklarisanje konstanti u asemblerskome programu .. .. .. .. .. .. .. .. .. .. .. ..        74
6.6       Kreiranje sopstvenih tipova direktivom TYPEDEF.. .. .. .. .. .. .. .. .. .. .. ..         74
6.7       Pokazivački tipovi podataka.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..       74
6.8       Složeni tipovi podataka. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..      77
6.8.1    Nizovi. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..     77
6.8.1.1 Deklarisanje jednodimenzionalnog niza .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..        78
6.8.1.2 Pristup elementima u jednodimenzionalnome nizu. .. .. .. .. .. .. .. .. .. .. .. ..          79
6.8.2    Višedimenzionalni nizovi. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..        80
6.8.2.1 Preslikavanje po redovima.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..      81
6.8.2.2 Preslikavanje po kolonama. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..       84
6.8.2.3 Određivanje prostora za višedimenzionalne nizove .. .. .. .. .. .. .. .. .. .. .. ..         84
6.8.2.4 Pristup elementima višedimenzionalnih nizova .. .. .. .. .. .. .. .. .. .. .. .. .. ..           85
6.9       Kontrolne strukture. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..      86
6.9.1    Kontrolne strukture grananja. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..       86
6.9.1.1 Uslovno grananje. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..      87
6.9.1.2 Bezuslovno grananje. .. .. ..  .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..      87
6.9.1.3 Emuliranje uslovnih iskaza jezika visokog nivoa .. .. .. .. .. .. .. .. .. .. .. .. ..           88
6.9.2    Procedure i interapti.. .. ..  .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..      89
6.9.2.1 Procedure.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..    89
6.9.2.2 Interapti. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..     91
6.9.2.2.1 Interaptna tabela vekotra.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..     93
6.9.2.2.2 Interaptna uslužna rutina.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..       93
6.9.2.2.3 Prekidi toka izvršenja programa.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..       94
7          Programsko okruženje .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..     96
7.1       Konstrukcije asemblera.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..     96
7.1.1    Dvoprolazni asembler .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..       97
7.1.2    Jednoprolazni asembler .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..    98
7.1.3    Izlaz iz asemblera – objektni kod.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..      100
7.2       Povezivanje modula programa - linkeri. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..       102
7.3       Punjenje programa u memoriju - loaderi.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..       104
7.3.1    Loaderi ‘kompajliraj-i-kreni’. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..       105
7.3.2    Opšta šema loadera.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..    105
7.3.3    Relocirajući loaderi. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..      106
Dodatak A: Kodiranje informacija. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..           107
            A1: Kodiranje informacija kroz historiju. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..         107
            A2: ASCII tabela.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..     110
Dodatak B:  Instrukcijski skup - procesor 8088.. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..       113
Dodatak C:  Slika operativnog sistema i programa u memoriji .. .. .. .. .. .. .. .. .. ..          165
            C1: Zauzeće memorije po iniciranju operativnog sistema MS-DOS. .. .. ..          165
            C2: Format izvršnog modula (.EXE). .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..        166
            C3: Izgled koda programa sa slike 64. U memoriji po sekcijama.. .. .. .. ..          167
Dodatak D:  Interapti arhitekture 8088 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..           169
            D1: Interni hardverski interapti. .. .. .. .. .. .. .. .. .. .. .. . .. .. .. .. .. .. .. .. .. ..         169

            D2: Eksterni hardverski interapti. .. .. .. .. .. .. .. .. .. .. . .. .. .. .. .. .. .. .. .. ..         169
            D3: Softverski interapti .. .. ..  .. .. .. .. .. .. .. .. .. .. .. .. . .. .. .. .. .. .. .. .. .. ..        170
Literatura .. .. .. .. .. ..  .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..         173
 
 
 

 

Predgovor

Zahtjevi za pojavu ovog materijale leže u nedostatku materijala na fakultetima u BiH koji se 

bave ovom problematikom. Kako je razvoj računarske tehnologije enormno brz, a time se i 
arhitekture računara mijenjaju, to se poslije rata ukazala potreba za udžbenikom koji pokriva 
ovu materiju na bosanskome jeziku (i/ili ostalim srodnim jezicima ex-Yu). Kako studenti na 
našim fakultetima slušaju nastavu na našem jeziku, to se ne može od njih zahtjevati da materiju 
vezanu za arhitekturu računara traže na Internetu na engleskome jeziku. To su glavni razlozi što 
sam se prihvatio ovog posla.

Kako su arhitekture računara vezane za konkretnu mašinu, to je cilj ovoga materijala nije da 

predstavi  ni   jednu   partikularnu   arhitekturu,   već 

principe

 na  kojima   se   baziraju   arhitektura 

računara. Da bi se cilj što uspješnije ostvario, koristile su se apstrakne arhitekture hipotetičke 
mašine, na kojoj su prikazani opšti principi rada. Razumijevanje programske organizacije 
računara se bazira na dualizmu softvera i hardvera. Zato se ovaj materijal bavi problematikom 
koja dodiruje obije oblasti, ali se i trudi da ne prevagne na ni jednu stranu previše. Ako se 
definiše 

funkcija cilja

 ovog rada, onda ona nije da student nauči programirati u asembleru i/ili 

konstrukciju hardverskih sklopova, već da savlada principe rada računarske opreme i to na onoj 
tački gde granica između softvera i hardvera nestaje. Funkcija cilja će biti zadovoljena, ako 
student uspije da sagleda izvršenje Pascalskog iskaz a:=5; na  nižim nivoima, sve dok ne dođe 
do nivoa kontrolnih signala i stanja na logičkim sklopovima, prilikom realizacije navedenog 
iskaza. Posebna pažnja je posvećena definisanju primitivnih operacija, kako kod softvera tako i 
kod hardvera, iz kojih se mogu realizovati ostale.

Materijal   počinje   sa   načinima   kodiranja   informacija   i   brojevima,   te   osnovnih   logičkih 

sklopaova   za   manipulisanje   tim   informacijama.   U   sljedećim   poglavljima   se   nazmjenično 
smjenjuju   'softveraški'   i   'hardveraški'   pogled   na   realizaciju   računarske   mašine.   Pored 
definisanja virtuelne mašine, definisan je i mašinski jezik sa minimalnim skupom instrukcija. 
Na ovakvom modelu je moguće presdstaviti sve bitne elemente koji su vezani za moderne 
računarske arhitekture. Kako bi se omogućilo razumjevanje struktuiranog programiranja i 
strukture podataka, to su dati načini zapisa istih u realnom asembleru 8086. Da bi se slika 
izvršenja zadatka na računarau kompletirala, u zadnjoj glavi su obrađeni procesi prevođenja 
programa, linkovanja i punjenja, te izvršenja, što već zalazi u domen operativnih sistema. U 
ovome materijalu nisu obrađene asemblerske instrukcije pojedinačno, što je u knjigama ovog 
tipa obično urađeno. Razlog leži u tome što je funkcijom cilja definisano da je bitan princip 
rada, pa su ovi detalji ostavljeni eventualno za sljedeću verziju. Kako bi se naglasio model 
udžbenika, to su na krajevima poglavlja data pitanja vezana za problematiku datog poglavlja 
kao i dodatna razmišljanja.

Posebno bih naglasio jezičke probleme koji su neizbježni kada je u pitanju računarska 

tehnologija, jer je većina problema izvorno definisana na engleskome jeziku. Nisu uvijek 
mogući adekvatni prijevodi na bosanski jezik. Nekada i kada postoji dobar prijevod, kao što je 
prihvatnik za buffer, ljudi su ipak navikli i radije koriste izvorni oblik. Trudio sam se koliko je 

background image

instrukciju, često na modelima nižeg nivoa zahtjevaju puno koraka za svoje izvršenje. Pascalski 
iskaz napisan u jednoj liniji:

y

:=

ax+b

sastoji se od više primitivnih operacija:

        

množenje konstante 

a

 sa varijablom 

x

;

        

dodavanje konstante 

b

 proizvodu;

        

pridruživanje vrijednosti varijabli 

y

.

Svaki od navedenih koraka predstavlja barem po jednu liniju (instrukciju) u asemblerskome 

jeziku. Prva linija se prevodi u

mul       a,x

U zavisnosti od arhitekture procesora, navedena instrukcija se prevodi kod:

        

troadresnih mašina:                     mul       a,a,x

        

dvoadresnih mašina:                   mul       a,x

        

jednoadresnih mašina:                load      a 

mul       x 
sto        a

Sljedeći nivo je mašinski kôd gdje su mnemonici i operandi binarno kodirani. Kod daljnjih 

nivoa apstrakcije prelazi se na hardver i microkod izvršavanja pojedinih operacija.

Navedeni nivoi se mogu predstaviti šematski kao na slici 1.

 
Programski jezici visokog nivoa su prilagođeni programerima za što jednostavniju realizaciju 

algoritama nad podacima kako bi se zadovoljila željena funkcija (obrada). Program koji prevodi 
kod   napisan   u   jeziku   visokog   nivoa   u   jezik   razumljiv   za   određenu 

računarsku 

arhitekturu 

naziva se 

kompajler

.   Kod koji se dobije iz kompajlera za svaku operaciju nad 

podacima definiše neki simbol, pa se nazva simbolički jezik ili asembler. Kako on implicitno 
odražava   arhitekturu   računara,   to   on   predstavlja 

međuvezu 

između   računarskog   hardvera  i 

softvera i precizno definiše šta računarske 

instrukcije

 rade i kako se specificiraju. Sljedeća faza 

je prevođenje asemblerskog programa posredstvom asemblera u 

mašinski program

, u kome je 

svaka instrukcija direktno razumljiva hardveru.

Ovo je tačka gdje prestaje softver a počinje hardver, čije granice nisu jasne. Često mikrokod 

iste instrukcije jedni definišu kao softver a drugi kao hardver, u zavisnosti da li se posmatra sa 
softverske ili hardverske strane apstrakcije. Dok neki dijelovi programa (u mašinskome jeziku) 
za izvršavaje pozivaju hardverske sklopove, na drugoj mašini, za isti dio postoji podprogram 
(softverska emulacija) koja to obrađuje

[3]

.

Program se sastoji od kolekcije varijabli, skupa instrukcija (rečenica) koje djeluju nad tim 

varijablama, i pravila koja definišu redosljed primjene (izvršavanja) instrukcija. Ako za svaku 
instrukciju postoji jedinstven identifikator (labela) i svaka ima implicitno definisane varijable, 
inicijalno se definiše i implicitna varijabla

[4]

 za labelu prve instrukcije koja će se izvršiti. Kada 

program  starta,  izvrši se prva  instrukcija  i  modifikuje  jedna  ili  više varijabli.  Implicitnoj 

Želiš da pročitaš svih 65 strana?

Prijavi se i preuzmi ceo dokument.

Ovaj materijal je namenjen za učenje i pripremu, ne za predaju.

Slični dokumenti