Professional Documents
Culture Documents
1 Arh Procesora
1 Arh Procesora
PREDGOVOR ....................................................................................................................................................... 1
SADRAJ ............................................................................................................................................................... 3
1
ARHITEKTURA RAUNARA.................................................................................................................. 7
1.1 PROGRAMSKI DOSTUPNI REGISTRI ................................................................................................. 7
1.2 TIPOVI PODATAKA ............................................................................................................................. 20
1.2.1
Opte napomene ............................................................................................................................ 20
1.2.2
Predstavljanje podataka ................................................................................................................ 20
1.2.2.1
1.2.2.2
1.2.2.3
1.2.2.4
1.5.2
1 ARHITEKTURA RAUNARA
U ovoj glavi se razmatraju elementi arhitekture raunara koju ine programski dostupni
registri, tipovi podataka, formati instrukcija, naini adresiranja, skup instrukcija i mehanizam
prekida.
podatka. Ubrzanje se postie time to umesto da se svaki put kada postoji potreba za datim
podatkom ide u memorijsku lokaciju ide se u registar podatka. Pored toga mogue je
meurezultate raunanja ostavljati u registrima podataka, da bi kasnije, kada oni budu
potrebni, njima moglo da se pristupa itanjem odgovarajuih registara podataka. Ubrzanje se
postie time to se meurezultat ne smeta u memorijsku lokaciju i to kasnije kada postoji
potreba za njim umesto da se ide u memorijsku lokaciju ide se u registar podatka. Konane
rezultate raunanja treba na kraju, programskim putem izvravanjem instrukcija prenosa,
prebaciti iz registara podataka u memorijske lokacije. Ovakvo korienje registrima podataka
ima opravdanja iz dva razloga. Prvi je uoeni vremenski lokalitet prilikom rada sa skalarnim
veliinama koji ukazuje da ako se jedanput pristupilo nekom podatku postoji velika
verovatnoa da e se posle toga vie puta javiti potreba za pristup istom podatku. Drugi je
sekvencijalna priroda raunanja za koju je karakteristino da se razultat jedne operacije veoma
esto koristi kao podatak za drugu operaciju.
Adresni registri AR se koriste kod registarskog indirektnog adresiranja (odeljak 1.4.2) i
autoinkrement i autodekrement naina adresiranja (odeljak 1.4.9). Adresnim registrima se
pristupa programskim putem instrukcijama prenosa (odeljak 1.5.1.1) i aritmetikim (odeljak
1.5.1.2), logikim (odeljak 1.5.1.3) i pomerakim instrukcijama (odeljak 1.5.1.4) kada se
sadraj adresnog registra koristi kao adresa memorijske lokacije sa koje se ita ili u koju se
upisuje podatak, kao i instrukcijom skoka JMPIND (odeljak 1.5.1.5) kada se sadraj adresnog
registra koristi kao adresa skoka koju treba upisati u programski broja PC. Adresni registri se
uvode da bi se ubrzao pristup adresama, tako to bi se tokom izvravanja programa pristupalo
adresama u adresnim registrima procesora umesto u memorijskim lokacijama, a rezultat je
injenice da je pristup registrima skoro za red veliine bri od pristupa memorijskim
lokacijama. Adresni registar i odgovarajue adresiranje se koriste u situacijama kada tokom
izvravanja programa treba najpre sa nekoliko instrukcija izraunati adresu elementa neke
sloene strukture podataka i smestiti je u neki od adresnih registara, pa onda ili instrukcijom
prenosa ili aritmetikom, logikom ili pomerakom instrukcijom sadraj adresnog registra
koristiti kao adresu memorijske lokacije sa koje se ita ili u koju se upisuje podatak. Adresni
registar i odgovarajue adresiranje se koriste i u situacijama kada tokom izvravanja programa
treba najpre sa nekoliko instrukcija izraunati adresu skoka, pa onda instrukcijom skoka
JMPIND sadraj adresnog registra koristiti kao adresu skoka koju treba upisati u programski
broja PC. U oba sluaja je mogue sraunatu adresu upisati umesto u adresni registar u
memorijsku lokaciju i do te adrese doi memorijskim indirektnim adresiranjem.
Bazni registri BR se koriste kod baznog (odeljak 1.4.5) i bazno-indeksnog adresiranja
(odeljak 1.4.8). Zbir sadraja specificiranog baznog registra i pomeraja kod baznog
adresiranja, odnosno baznog registra, indeksnog registra i pomeraja kod bazno-indeksnog
adresiranja, predstavlja adresu memorijske lokacije na kojoj se nalazi izvorini ili odredini
operand.
Indeksni registri XR se koriste kod indeksnog (odeljak 1.4.6) i bazno-indeksnog
adresiranja (odeljak 1.4.8). Zbir sadraja specificiranog indeksnog registra i pomeraja kod
indeksnog adresiranja, odnosno baznog registra, indeksnog registra i pomeraja kod
bazno-indeksnog adresiranja, predstavlja adresu memorijske lokacije na kojoj se nalazi
izvorini ili odredini operand.
Registri opte namene GPR se koriste na isti nain kao registri podataka, adresni registri,
bazni registri i indeksni registri. Registri opte namene GPR se javljaju kod onih procesora
kod kojih ne postoje posebni registri podataka, adresni registri, bazni registri i indeksni
registri. Za razliku od procesora sa posebnim registrima podataka, adresnim registrima,
baznim registrima i indeksnim registrima, gde se registri iz svake grupe registara koriste samo
uz odgovarajua adresiranja, procesori sa registrima opte namene mogu da koriste bilo koji
od registara uz bilo koje adresiranje.
Registar PSW je standardna programska statusna re procesora sastavljena od odreenog
broja bitova, koji se obino nazivaju indikatori. Bitovi programske statusne rei PSW se
nezavisno postavljaju i koriste po pravilima definisanim posebno za svaki bit. Meutim, u
odreenim situacijama, kao kada se skae na prekidnu rutinu i vraa iz nje, sa bitovima
programske statusne rei PSW se postupa na isti nain, pa se zato uzima da oni predstavljaju
razrede jednog registra. U programskoj statusnoj rei PSW postoje dve grupe bitova i to bitovi
statusnog i bitovi upravljakog karaktera (slika 1). Ovi bitovi se nazivaju i indikatori.
15
14
13
12
11
10
STEK STANJE I
ADRESE
SADRZAJ
0153
0152
0151
0150
0149
STEK STANJE II
ADRESE
ADRESE
SADRZAJ
0153
0152 1234
0151
0150
0149
0153
0152 1234
0151
0150
0149
SP=0151
SP=0152
SP=0151
R5=1234
R7=5555
R5=1234
R7=5555
R5=1234
R7=1234
pocetno stanje
pre PUSH R5
posle PUSH R5
pre POP R7
SADRZAJ
posle POP R7
krajnje stanje
Slika 2 Stek raste prema viim lokacijama i registar SP ukazuje na zadnju zauzetu lokaciju
Kao poetno stanje pre izvrenja instrukcije PUSH R5 je uzeto da se u registru R5 nalazi
vrednost 1234, u registru R7 vrednost 5555 i da registar SP ukazuje na memorijsku lokaciju
na adresi 0151. Uzeto je da se najpre instrukcijom PUSH R5 sadraj registra R5 stavlja na vrh
steka. U okviru izvravanja instrukcije PUSH R5 sadraj 0151 registra SP se najpre
inkrementira pa se posle njegov sadraj 0152 koristi kao adresa memorijske lokacije u koju se
upisuje sadraj 1234 registra R5. Potom se instrukcijom POP R7 skida sadraj sa vrha steka i
upisuje u registar R7. U okviru izvravanja instrukcije POP R7 sadraj 0152 registra SP se
koristi kao adresa memorijske lokacije sa koje se najpre ita sadraj 1234 i upisuje u registar
R7, pa se posle sadraj registra SP dekrementira na vrednost 0151.
Stek raste prema viim lokacijama a registar SP ukazuje na prvu slobodnu lokaciju
Kod upisa na stek najpre se sadraj registra SP koristi kao adresa memorijske lokacije u
koju se upisuje, pa se posle toga vri inkrementiranje registra SP. Kod itanja sa steka najre se
vri dekrementiranje sadraja registra SP, pa se posle toga sadraj registra SP koristi kao
adresa memorijske lokacije sa koje se ita sadraj. Upisa na stek i itanje sa steka za ovakvu
realizaciju steka su ilustrovani na slici 3.
Kao poetno stanje pre izvrenja instrukcije PUSH R5 je uzeto da se u registru R5 nalazi
vrednost 1234, u registru R7 vrednost 5555 i da registar SP ukazuje na memorijsku lokaciju
na adresi 0151. Uzeto je da se najpre instrukcijom PUSH R5 sadraj registra R5 stavlja na vrh
steka. U okviru izvravanja instrukcije PUSH R5 najpre se sadraj 0151 registra SP koristi
kao adresa memorijske lokacije u koju se upisuje sadraj 1234 registra R5, pa se posle njegov
sadraj inkrementira na vrednost 0152. Potom se instrukcijom POP R7 skida sadraj sa vrha
steka i upisuje u registar R7. U okviru izvravanja instrukcije POP R7 sadraj 0152 registra
SP se najpre dekrementira na vrednost 0151, pa se posle koristi kao adresa memorijske
lokacije sa koje se ita sadraj 1234 i upisuje u registar R7.
10
STEK STANJE I
ADRESE
SADRZAJ
0153
0152
0151
0150
0149
STEK STANJE II
ADRESE
ADRESE
SADRZAJ
0153
0152
0151 1234
0150
0149
0153
0152
0151 1234
0150
0149
SP=0151
SP=0152
SP=0151
R5=1234
R7=5555
R5=1234
R7=5555
R5=1234
R7=1234
pocetno stanje
pre PUSH R5
posle PUSH R5
pre POP R7
SADRZAJ
posle POP R7
krajnje stanje
Slika 3 Stek raste prema viim lokacijama i registar SP ukazuje na prvu slobodnu lokaciju
Stek raste prema niim lokacijama a registar SP ukazuje na zadnju zauzetu lokaciju
Kod upisa na stek najpre se vri dekrementiranje registra SP, pa sa posle toga sadraj
registra SP koristi kao adresa memorijske lokacije u koju se upisuje. Kod itanja sa steka najre
se sadraj registra SP koristi kao adresa memorijske lokacije sa koje se ita sadraj, pa se
posle toga vri dekrementiranje sadraja registra SP. Upisa na stek i itanje sa steka za ovakvu
realizaciju steka su ilustrovani na slici 4 .
STEK STANJE I
ADRESE
SADRZAJ
0153
0152
0151
0150
0149
STEK STANJE II
ADRESE
ADRESE
SADRZAJ
0153
0152
0151
0150 1234
0149
0153
0152
0151
0150 1234
0149
SP=0151
SP=0150
SP=0151
R5=1234
R7=5555
R5=1234
R7=5555
R5=1234
R7=1234
pocetno stanje
pre PUSH R5
posle PUSH R5
pre POP R7
SADRZAJ
posle POP R7
krajnje stanje
Slika 4 Stek raste prema niim lokacijama i registar SP ukazuje na zadnju zauzetu lokaciju
Kao poetno stanje pre izvrenja instrukcije PUSH R5 je uzeto da se u registru R5 nalazi
vrednost 1234, u registru R7 vrednost 5555 i da registar SP ukazuje na memorijsku lokaciju
na adresi 0151. Uzeto je da se najpre instrukcijom PUSH R5 sadraj registra R5 stavlja na vrh
steka. U okviru izvravanja instrukcije PUSH R5 sadraj 0151 registra SP se najpre
dekrementira pa se posle njegov sadraj 0150 koristi kao adresa memorijske lokacije u koju se
upisuje sadraj 1234 registra R5. Potom se instrukcijom POP R7 skida sadraj sa vrha steka i
upisuje u registar R7. U okviru izvravanja instrukcije POP R7 sadraj 0150 registra SP se
11
koristi kao adresa memorijske lokacije sa koje se najpre ita sadraj 1234 i upisuje u registar
R7, pa se posle sadraj registra SP inkrementira na vrednost 0151.
Stek raste prema niim lokacijama a registar SP ukazuje na prvu slobodnu lokaciju
Kod upisa na stek najpre se sadraj registra SP koristi kao adresa memorijske lokacije u
koju se upisuje, pa se posle toga vri dekrementiranje registra SP. Kod itanja sa steka najre se
vri inkrementiranje sadraja registra SP, pa se posle toga sadraj registra SP koristi kao
adresa memorijske lokacije sa koje se ita sadraj. Upisa na stek i itanje sa steka za ovakvu
realizaciju steka su ilustrovani na slici 5 .
STEK STANJE I
ADRESE
SADRZAJ
0153
0152
0151
0150
0149
STEK STANJE II
ADRESE
ADRESE
SADRZAJ
0153
0152
0151 1234
0150
0149
0153
0152
0151 1234
0150
0149
SP=0151
SP=0150
SP=0151
R5=1234
R7=5555
R5=1234
R7=5555
R5=1234
R7=1234
pocetno stanje
pre PUSH R5
posle PUSH R5
pre POP R7
SADRZAJ
posle POP R7
krajnje stanje
Slika 5 Stek raste prema niim lokacijama i registar SP ukazuje na prvu slobodnu lokaciju
Kao poetno stanje pre izvrenja instrukcije PUSH R5 je uzeto da se u registru R5 nalazi
vrednost 1234, u registru R7 vrednost 5555 i da registar SP ukazuje na memorijsku lokaciju
na adresi 0151. Uzeto je da se najpre instrukcijom PUSH R5 sadraj registra R5 stavlja na vrh
steka. U okviru izvravanja instrukcije PUSH R5 najpre se sadraj 0151 registra SP koristi
kao adresa memorijske lokacije u koju se upisuje sadraj 1234 registra R5, pa se posle njegov
sadraj dekrementira na vrednost 0150. Potom se instrukcijom POP R7 skida sadraj sa vrha
steka i upisuje u registar R7. U okviru izvravanja instrukcije POP R7 sadraj 0150 registra
SP se najpre inkrementira na vrednost 0151, pa se posle koristi kao adresa memorijske
lokacije sa koje se ita sadraj 1234 i upisuje u registar R7.
Stek se koristi kao upravljaki stek i kao aritmetiki stek. Upravljaki stek se koristi kod
skoka na potprogram i skoka na prekidnu rutinu za uvanje informacija neophodnih za
povratak iz potprograma i povratak iz prekidne rutine. Aritmetiki stek se koristi kod nulaadresnih ili stek procesora kao implicitno izvorite i odredite operanada. Postoje realizacije
kod kojih se jedan stek koristi i kao upravljaki stek i kao aritmetiki stek, a postoje i
realizacije kod kojih postoje posebno upravljaki stek i posebno aritmetiki stek.
Jedna od situacija kada se stek koristi kao upravljaki stek prikazana je na slici 6. Uzeto je
da stek raste prema viim lokacijama i da registar SP ukazuje na zadnju zauzetu lokaciju.
Tokom izvravanja glavnog programa dolazi se na instrukciju JSR 0115 sa adrese 0046
kojom treba da se realizuju skok na potprogram I koji poinje od adrese 0115. Stanje na steku
je oznaeno sa stek stanje I. Pri itanju instrukcije sa adrese 0046 programski broja PC je
inkrementiran i ima vrednost 0047, pa se pri izvravanju instrukcije JSR 0115 na vrh steka
12
stavlja 0047 i u programski broja PC upisuje vrednost 0115. Stanje na steku po skoku na
potprogram I je oznaeno sa stek stanje II.
GLAVNI PROGRAM
ADRESE
0044
0045
0046
0047
0048
INSTRUKCIJE
JSR 0115
STEK STANJE I
ADRESE
SADRZAJ
0518
0517
0516
0515
0514
SP=0515
SADRZAJ
0125
0047
POTPROGRAM II
ADRESE
0115
0237
0123
0124
0125
0241
JSR 0237
0129
RTS
STEK STANJE II
ADRESE
INSTRUKCIJE
RTS
SADRZAJ
ADRESE
0047
0518
0517
0516
0515
0514
SP=0516
STEK STANJE V
0518
0517
0516
0515
0514
INSTRUKCIJE
0518
0517
0516
0515
0514
SP=0515
ADRESE
POTPROGRAM I
ADRESE
SADRZAJ
0125
0047
SP=0517
STEK STANJE IV
ADRESE
0518
0517
0516
0515
0514
SADRZAJ
0125
0047
SP=0516
Slika 6 Upravljaki stek
Tokom izvravanja potprograma I dolazi se na instrukciju JSR 0237 sa adrese 0124 kojom
treba da se realizuju skok na potprogram II koji poinje od adrese 0237. Stanje na steku je
oznaeno sa stek stanje II. Pri itanju instrukcije sa adrese 0124 programski broja PC je
inkrementiran i ima vrednost 0125, pa se pri izvravanju instrukcije JSR 0237 na vrh steka
stavlja 0125 i u programski broja PC upisuje vrednost 0237. Stanje na steku po skoku na
potprogram II je oznaeno sa stek stanje III.
Tokom izvravanja potprograma II dolazi se na instrukciju RTS sa adrese 0241 kojom treba
da se realizuju povratak na potprogram I i to na instrukciju sa adrese 0125. Stanje na steku je
oznaeno sa stek stanje III. Pri izvravanju instrukcije RTS sa vrha steka se skida 0125 i
upisuje u programski broja PC. Stanje na steku po povratku na potprogram I je oznaeno sa
stek stanje IV.
Tokom izvravanja potprograma I dolazi se na instrukciju RTS sa adrese 0129 kojom treba
da se realizuju povratak na glavni program i to na instrukciju sa adrese 0047. Stanje na steku
je oznaeno sa stek stanje IV. Pri izvravanju instrukcije RTS sa vrha steka se skida 0047 i
13
upisuje u programski broja PC. Stanje na steku po povratku na glavni program je oznaeno
sa stek stanje V.
Jedna od situacija kada se stek koristi kao aritmetiki stek prikazana je na slici 6. Uzeto je
da stek raste prema viim lokacijama i da registar SP ukazuje na zadnju zauzetu lokaciju.
GLAVNI PROGRAM
STEK STANJE I
ADRESE
SADRZAJ
ADRESE
INSTRUKCIJE
0052
0053
0054
0055
0056
0057
PUSH 0316
PUSH 0317
ADD
POP 0318
STEK STANJE II
STEK STANJE IV
STEK STANJE V
ADRESE
ADRESE
ADRESE
ADRESE
SADRZAJ
SADRZAJ
SADRZAJ
SADRZAJ
0319
0318
0317 0020
0316 0010
0315
0319
0318
0317 0020
0316 0010
0315
0319
0318
0317 0020
0316 0010
0315
0319
0318
0317 0020
0316 0010
0315
0319
0318 0030
0317 0020
0316 0010
0315
0153
0152
0151
0150
0149
0153
0152
0151 0010
0150
0149
0153
0152 0020
0151 0010
0150
0149
0153
0152 0020
0151 0030
0150
0149
0153
0152 0020
0151 0030
0150
0149
SP=0150
pocetno stanje
SP=0151
SP=0152
SP=0151
posle ADD
SP=0150
posle POP 0318
14
sadraj 0030. Stanje na steku je oznaeno sa stek stanje III. Pri izvravanju instrukcije ADD
najpre se sadraj 0020 ita sa adrese 0152 odreene sadrajem registra SP i sadraj registra SP
dekrementira sa vrednosti 0152 na vrednost 0151, zatim se sadraj 0010 ita sa adrese 0151
odreene sadrajem registra SP i sadraj registra SP dekrementira sa vrednosti 0151 na
vrednost 0150, potom se sabiranjem sadraja 0020 i 0010 dobija suma 0030 i na kraju se
sadraj registra SP inkrementira sa vrednosti 0150 na vrednost 0151 koja predstavlja adresu
memorijske lokaciju u koju se upisuje dobijena suma 0030. Po izvravanju instrukcije ADD
stanje na steku je oznaeno sa stek stanje IV.
Na kraju glavnog programa je instrukcija POP 0318 sa adrese 0056 kojom treba sa vrha
steka da se skine sadraj 0030 i upie u memorijsku lokaciju sa adrese 0318. Stanje na steku je
oznaeno sa stek stanje IV. Pri izvravanju instrukcije POP 0318 najpre se sadraj 0030 ita sa
adrese 0151 memorijske lokacije odreene sadrajem registra SP, sadraj registra SP
dekrementira sa vrednosti 0151 na vrednost 0150 i oitani sadraj upisuje u memorijsku
lokaciju na adresi 0318. Po izvravanju instrukcije POP 0318 stanje na steku je oznaeno sa
stek stanje V.
15
Ukaziva na okvir steka FP (frame pointer) ukazuje na bazu okvira (frame-a) koji se
formira na steku kod poziva potprograma. Koristi se za pristup
- parametrima koji se predaju kod poziva potprograma i
- lokalnim promenljivim veliinama kod jezika sa dinamikim dodeljivanjem prostora
kod ulaska u potprogram i oslobaanjem prostora kod naputanja potprograma.
16
Primer 1.
PROGRAM PRIMER;
begin
integer par1, par2;
...
procedure PRIM (x,y);
begin
integer a, b, c;
...
begin
...
end;
end;
...
begin
...
CALL PRIM (par1,par2);
PUSH BP
MOVE SP, BP
PUSH R1
PUSH R2
PUSHPSW
SUB SP, 3
...
ADD SP, 3
POPPSW
POP R2
POP R1
POP BP
RTS
PUSH par1
PUSH par2
JSR PRIM
ADD SP, 2
...
end;
end;
17
Primer 2.
PROGRAM PRIMER;
begin
integer par1, par2;
...
procedure TEST (z);
begin
integer e, f;
...
begin
...
end;
end;
procedure PRIM (x,y);
begin
integer a, b, c;
...
begin
...
CALL TEST(c);
...
end;
end;
...
begin
...
CALL PRIM (par1, par2);
PUSH BP
MOVE SP, BP
PUSHPSW
SUB SP, 2
...
ADD SP, 2
POPPSW
POP BP
RTS
PUSH BP
MOVE SP, BP
PUSH R1
PUSH R2
PUSHPSW
SUB SP, 3
...
PUSH c
JSR TEST
ADD SP,1
...
ADD SP, 3
POPPSW
POP R2
POP R1
POP BP
RTS
PUSH par1
PUSH par2
JSR PRIM
ADD SP, 2
...
end;
end;
18
Primer 3.
PROGRAM PRIMER;
begin
integer par1, par2;
...
procedure PRIM (x,y);
begin
integer a, b, c;
...
begin
...
CALL PRIM (a,b);
...
end;
end;
...
begin
...
CALL PRIM (par1,par2);
PUSH BP
MOVE SP, BP
PUSH R1
PUSH R2
PUSHPSW
SUB SP, 3
...
PUSH a
PUSH b
JSR PRIM
ADD SP, 2
...
ADD SP, 3
POPPSW
POP R2
POP R1
POP BP
RTS
PUSH par1
PUSH par2
JSR PRIM
ADD SP, 2
...
end;
end;
19
Opte napomene
Podatke je mogue predstaviti na vie razliitih naina, kao, na primer, celobrojna veliina
bez znaka, celobrojna veliina sa znakom, koja dalje moe da se predstavi kao znak i veliina,
prvi komplement i drugi komplement, zatim pokretni zarez, alfanumeriki niz, numeriki niz
decimalnih brojeva itd. Pored toga za svaki nain predstavljanja mogue je da podaci budu
predstavljeni na razliitim duinama. Kao primer se moe uzeti celobrojna veliina bez znaka
koja se u savremenim raunarima veoma esto predstavlja na duinama 8, 16, 32 i 64 bita,
ime se postiu razliiti opsezi predstavljanja celobrojnih veliina bez znaka i to od 0 do 28-1,
od 0 do 216-1, od 0 do 232-1 i od 0 do 264-1.
Kao posledica predstavljanja podataka na vie razliitih naina jedna ista kombinacija 0 i 1
predstavljae razliite vrednosti podataka. Kao primer se moe uzeti binarna re 10000011
koju je mogue interpretirati na vie naina. To je
+131, ako se inerpretira kao celobrojna vrednost bez znaka,
-3, ako se interpretira kao celobrojna vrednost sa znakom u nainu predstavljanja znak i
veliina,
-125, ako se interpretira kao celobrojna veliina sa znakom u nainu predstavljanja prvi
komplement,
-124, ako se interpretira kao celobrojna veliina sa znakom u nainu predstavljanja drugi
komplement i
+83, ako se interpretira kao numeriki niz binarno kodiranih decimalnih brojeva bez znaka.
Podatak ija je duina vea od duine adresibilne memorijske lokacije smeta se u niz
susednih memorijskih lokacija. Pri tome se kao adresa takvog podatka zadaje adresa samo
jedne i to najnie memorijske lokacije. Kao primer se moe uzeti podatak duine 4 bajta za
koji se kao adresa zadaje 55, pri emu je irina memorijske rei 1 bajt. Ovaj podatak se smeta
u memorijske lokacije na adresama 55, 56, 57 i 58, a kao njegova adresa zadaje se 55. Stvar je
realizacije procesora da u sluaju podatka duine 4 bajta za koji se kao adresa zadaje 55 oita
4 bajta sa adresa 55, 56, 57 i 58.
Podaci duine vee od duine adresibilne memorijske lokacije mogu da se u memoriji
smetaju na dva naina. Kod prvog naina, na najnioj adresi je najstariji bajt podatka, a na
viim adresam redom mlai bajtovi podatka. Ovakav nain smetanja se naziva big-endian.
Kod drugog naina, na najnioj adresi je najmlai bajt podatka, a na viim adresam redom
stariji bajtovi podatka. Ovakav nain smetanja se naziva little-endian.
1.2.2
Predstavljanje podataka
n 1
A=
2i a i
i =0
Uz takav nain interpretiranja bitova binarne rei, predstavljaju se celobrojne veliine bez
znaka u opsegu 0 do 2n1.
Meutim, ako se ista binarna re intrpretira kao celobrojna veliina sa znakom u drugom
komplementu, onda ona predstavlja podatak A ija se vrednost izraunava pomou izraza
A = 2n-1an-1 +
n 2
2i a i
i =0
30
...
e
23
22
...
f
Slika 8 Veliina u pokretnom zarezu
21
kod
30
31
32
...
38
39
70
71
72
...
78
79
1
2
3
123
adresa
A
A+1
A+2
3
3
7
22
1
2
3
adresa
A
A+1
A+2
kod
2B
2D
cifra
0
1
2
...
8
9
kod
30
31
32
...
38
39
B
1
2
3
123
adresa
A
A+1
A+2
A+3
2
3
3
3
D
1
2
3
adresa
A
A+1
A+2
A+3
kod
0
1
2
...
8
9
A, C, E ili F
B ili D
2
C
12
adresa
A
A+1
0
2
23
1
D
adresa
A
A+1
24
jedne memorijske lokacije. To bi kod ovog pristupa zahtevalo da svaka instrukcija zbog
informacije o sledeoj instrukciji bude dua tridesetak bitova. Zbog toga je danas uobiajen
pristup da u formatu instrukcije ne postoji informacija o sledeoj instrukciji ve da se tokom
sekvencijalnog izvravanja instrukcija implicitno kao adresa sledee instrukcije koristi tekua
vrednost programskog brojaa koja se inkrementira posle svakog itanja instrukcije, a da se
kada treba odstupiti od sekvencijalnog izvravanja instrukcija eksplicitno instrukcijom skoka
vri upis adrese sledee instrukcije u programski broja PC. Interesantno je da se u
mikroprogramima kod mikroprogramskih realizacija upravljakih jedinica skokovi u
mikroprogramu javljaju u proseku posle svake druge ili tree mikroinstrukcije, pa je stoga
dosta uobiajeno da u formatu mikroinstrukcije pored dela kojim se specificira koje
mikrooperacije treba da se realizuju postoji i deo sa adresom mikroinstrukcije na koju treba
prei u sluaju da se odstupa od sekvencijalnog izvravanja mikroinstrukcija.
Informacije i operaciji i tipu podatka sa kojim operacija treba da se realizuje i izvorinim i
odredinim operandima se specificiraju odgovarajuim poljima instrukcije. U zavisnosti od
toga kako se ove dve vrste informacija specificiraju, zavisi kakve je struktura polja u formatu
instrukcije. Na osnovu toga se govori o razliitim formatim instrukcija. U daljim
razmatranjima se daju funkcije i struktura najpre polja sa specifikacijom operanda i tipa
operacije, a zatim i polja sa specifikacijom izvorinih i odredinih operanada.
1.3.1
Ovim poljem, koje se obino naziva polje koda operacije, se specificira operacija koju
treba izvriti i tip podatka nad kojim datu operaciju treba izvriti. Pod operacijom se misli na
operacije iz skupa instrukcija, kao to su operacije prenosa, aritmetike operacije, logike
operacije, operacije pomeranja i rotiranja i upravljake operacije. Pod tipom podatka se misli
iz koliko susednih memorijskih lokacija treba proitati binarne i na koji, od vie moguih
naina, ih treba interpretirati.
Stoga je neophodno procesor tako realizovati da se na osnovu vrednosti koda operacije
utvruje
- iz koliko susednih memorijskih lokacija, poev od one koja je specificirana poljem sa
specifikacijom izvorinih i odredinih operanada, treba oitati memorijskih rei da bi se dobio
operand potrebne duine,
- kako oitane binarne vrednosti treba interpretirati i
- koju operaciju treba realizovati.
Kao ilustracija ovog pristupa moe se uzeti da u procesoru koji od tipova podatak podrava
- celobrojne veliine bez znaka duine 8, 16, 32 i 64 bita,
- celobrojne veliine sa znakom predstavljene u drugom komplementu duine 8, 16, 32 i 64
bita i
- veliine u pokretnom zarezu duine 32 i 64 bita
mora da postoji 10 kodova operacija za operaciju mnoenja.
1.3.2
Ovim poljem se eksplicitno specificiraju operandi. Postoje vie varijanti ovog polja koje
nastaju kao posledica sledea dva elementa:
- broj eksplicitno specificiranih operanada i
- mogue lokacije operanada.
1.3.2.1 Broj eksplicitno specificiranih operanada
U sluaju binarnih operacija, kao to su aritmetike i logike operacije, potrebne su dve
izvorine i jedna odredina lokacija. U zavisnosti od toga koliko se lokacija eksplicitno
25
A1
A2
A3
A1
A2
26
A1
27
A1
28
29
MEMORIJA
144424443
IR
MAR
MBR
SRC/DST
OC AM dr
123
DR
ALU
Z
AR
BR
XR
30
PC
MEMORIJA
144424443
IR
MAR
MBR
SRC/DST
OC AM dr
123
GPR
ALU
onih procesora kod kojih postoje samo registri opte namene (GPR), adresa memorijske
lokacije se nalazi u jednom od registara opte namene. U oba sluaja u adresnom delu
instrukcije u kome se specificira operand, pored grupe bitova kojima se zadaje nain
adresiranja (AM), postoji i grupa bitova kojima se zadaje adresa adresnog registra ili registra
opte namene (ar).
PC
MEMORIJA
144424443
IR
MAR
MBR
SRC/DST
OC AM ar
123
DR
ALU
Z
AR
BR
XR
32
PC
MEMORIJA
144424443
IR
MAR
MBR
SRC/DST
OC AM ar
123
GPR
ALU
MEMORIJA
144424443
IR
MAR
MBR
SRC/DST
OC AM
adr
14444244443
ALU
33
adresa memorijske lokacije (adr) i prebacuje u adresni registar memorije (MAR), iz nekog od
prihvatnih registara podataka procesora se podatak upisuje u prihvatni registar podatka
memorije (MDR) i iz njega upisuje u memorijsku lokaciju odreenu sadrajem adresnog
registra memorije. Na slikama je uzeto da se operand koji se ita upisuje u prihvatni registar
podatka procesora X na ulazu ALU, a da se podatak koji se upisuje uzima iz prihvatnog
registra podatka procesora Z na izlazu ALU.
1.4.4
MEMORIJA
144424443
IR
MAR
MBR
SRC/DST
OC AM
adr
14444244443
ALU
34
uzeto da se operand koji se ita upisuje u prihvatni registar podatka procesora X na ulazu
ALU, a da se podatak koji se upisuje uzima iz prihvatnog registra podatka procesora Z na
izlazu ALU.
1.4.5
MEMORIJA
144424443
IR
MAR
MBR
SRC/DST
OC AM br
123
pom
14243
DR
ALU
ADD
Z
AR
BR
XR
35
registra memorije ita se operand i prihvata u prihvatni registar podatka memorije (MDR) i iz
njega upisuje u neki od prihvatnih registara podataka procesora.
Ukoliko se bazno adresiranje sa pomerajem koristi za odredini operand, tada se ita
sadraj baznog registra na osnovu zadate adrese (br) iz adresnog dela instrukcije i pomeraj
(pom) iz adresnog dela instrukcije, formira njihova suma i prebacuje u adresni registar
memorije (MAR), iz nekog od prihvatnih registara podataka procesora se podatak upisuje u
prihvatni registar podatka memorije (MDR) i iz njega upisuje u memorijsku lokaciju odreenu
sadrajem adresnog registra memorije. Na slikama je uzeto da se operand koji se ita upisuje
u prihvatni registar podatka procesora X na ulazu ALU, a da se podatak koji se upisuje uzima
iz prihvatnog registra podatka procesora Z na izlazu ALU.
Objanjenje za rafiranu grupu bitova u adresnom delu instrukcije je isto kao i za
registarsko direktno adresiranje.
1.4.6
36
PC
MEMORIJA
144424443
IR
MAR
MBR
SRC/DST
OC AM
xr
pom
123 14243
DR
ALU
ADD
Z
AR
BR
XR
37
PC
MEMORIJA
144424443
IR
MAR
MBR
SRC/DST
OC AM gpr
123
pom
14243
GPR
ALU
ADD
Z
38
MEMORIJA
144424443
IR
MAR
MBR
SRC/DST
OC AM br
xr
pom
DR
ALU
ADD
Z
AR
BR
ADD
XR
MEMORIJA
144424443
IR
MAR
MBR
SRC/DST
OC AM br
xr
pom
GPR
ALU
ADD
Z
ADD
39
40
MEMORIJA
144424443
IR
MAR
MBR
SRC/DST
OC AM
pom
14243
ALU
ADD
Z
41
operand (immed). Neposredno adresiranje se javlja i kod onih procesora kod kojih postoje
posebno registri podataka (DR), adresni registri (AR), bazni registri (BR) i indeksni registri
(XR) i kod onih procesora kod kojih postoje samo registri opte namene (GPR). U oba sluaja
do operand se dolazi na identian nain. Neposredno adresiranje moe da se koristi samo za
izvorini operand (SRC), dok se za odredini operand (DST) ne koristi.
PC
MEMORIJA
144424443
IR
MAR
MBR
SRC
OC AM
immed
14444244443
ALU
STANDARDNE INSTRUKCIJE
Standardne instrukcije ukljuuje operacije ijim kombinovanjem svaki problem koji treba
da se rei u raunaru moe da se predstavi programom. Standardne instrukcije se u nekom
vidu nalaze u svakom procesoru. Skup standardnih instrukcija ine instrukcije prenosa,
aritmetike instrukcije, logike instrukcije, instrukcije pomeranja i rotiranja, instrukcije skoka
i meovite instrukcije.
1.5.1.1 INSTRUKCIJE PRENOSA
Podaci se nalaze u memorijskim lokacijama, registrima procesora i u instrukciji. Zbog toga
mora da postoje instrukcije prenosa za prebacivanje podataka izmeu lokacija na kojima
mogu da se nau. Treba napomenuti da podaci mogu da budu i u registrima kontrolera
periferija, pri emu se njima pristupa na dva naina. Kod nekih procesora registri kontrolera
42
periferija se ne izdvajaju kao posebno mesto gde mogu da budu podaci ve se tretiraju na isti
nain kao i memorijske lokacije, pa ne postoje posebne instrukcije za prenos podatak u i iz
registara kontrolera periferija ve se registrima kontrolera periferija pristupa istim
instrukcijama kojima se pristupa memorijskim lokacijama. Kod ovih procesora se kae da je
ulazno izlazni adresni prostor memorijski preslikan. Kod drugih procesora registri kontrolera
periferija se izdvajaju kao posebno mesto gde mogu da budu podaci i postoje posebne
instrukcije za prenos podatak u i iz registara kontrolera periferija. Kod ovih procesora se kae
da su ulazno izlazni i memorijski adresni prostori razdvojeni.
Pored toga kod procesora sa jednoadresnim formatom instrukcija akumulator je implicitno
izvorite i odredite. Zato postoji potreba za instrukcijom prenosa kojom bi podatak preneo u
akumulator i dalje mogao da koristi kao izvorini operand. Akumulator je i implicitno
odredite, pa postoji potreba za instrukcijom prenosa kojom bi se podatak prebacio iz
akumulatora u eljenu lokaciju. Slina je sitiacija i kod procesora sa nulaadresnim formatom
instrukcija kod kojih je vrh steka implicitno izvorite i odredite. Zato postoji potreba za
instrukcijom prenosa kojom bi podatak preneo na vrh steka i dalje mogao da koristi kao
izvorini operand. Vrh steka je i implicitno odredite, pa postoji potreba za instrukcijom
prenosa kojom bi se podatak prebacio sa vrha steka u eljenu lokaciju.
U daljem tekstu se razmatraju mogue instrukcije prenosa.
MOV a, b
Ova instrukcija se javlja kod procesora sa dvoadresnim formatom instrukcija. Sa MOV je
simboliki oznaeno polje koda operacije, a sa a i b specifikacije jednog izvorinog i jednog
odredinog operanda. U daljim razmatranjima e se uzeti da je a izvorite, a b odredite, mada
moe da bude i obrnuto. U zavisnosti od specificiranog naina adresiranja a moe da bude
registar procesora, memorijska lokacija (a kod procesora kod kojih je ulazno izlazni prostor
memorijski preslikan i registar kontrolera periferije) i neposredna veliina u instrikciji. Slina
je situacije i sa b, pre emu, zbog toga to se radi o odreditu, b samo ne moe da bude
neposredna veliina u instrukciji. Specificiranjem odgovarajuih adresiranja mogue je
realizovati prenose iz memorije (registra kontrolera periferije) u memoriju (registar kontrolera
periferije), iz memorije (registra kontrolera periferije) u registar procesora, iz registra
procesora u memoriju (registar kontrolera periferije), iz registra procesora u registar
procesora, neposredno iz instrukcije u memoriju (registar kontrolera periferije) i neposredno
iz instrukcije u registar procesora.
Kod procesora sa troadresnim formatom instrikcija sve je isto, samo to se polje za
specifikaciju drugog izvorita ne koristi.
IN regper, regproc
OUT regproc, regper
Ove instrukcije se javljaju kod procesora sa dvoadresnim formatom instrukcija, ukoliko su
ulazno izlazni i memorijski adresni prostori razdvojeni. Sa IN je simboliki oznaeno polje
koda operacije za prenos iz registra kontrolera periferije u registar procesora, pri emu je sa
regper direktno data adresa registra kontrolera periferije, dok je sa regproc direktno data
adresa registra procesora. Sa OUT je simboliki oznaeno polje koda operacije za prenos iz
registra procesora u registar kontrolera periferije, pri emu regproc i regper imaju identino
znaenje kao i u sluaju instrukcije IN. Uobiajeno je kod ovih instrukcija da su prenosi samo
izmeu registara kontrolera periferija i registara procesora i da se njihove adrese direktno
daju.
IN regper
43
OUT regper
Ove instrukcije se javljaju kod procesora sa jednoadresnim formatom instrukcija, ukoliko
su ulazno izlazni i memorijski adresni prostori razdvojeni. Oznake IN, OUT i regper imaju
identino znaenje kao i u sluaju procesora sa dvoadresnim formatom instrukcija. Kod
instrukcije IN prenos je iz registra kontrolera periferije ija je adresa direktno data sa regper i
akumulatora koji je implicitno odredite, dok je kod instrukcije OUT prenos iz akumulatora
koji je implicitno izvorite i registra kontrolera periferije ija je adresa direktno data sa regper.
LOAD a
STORE b
Ove instrukcija se javlja kod procesora sa jednoadresnim formatom instrukcija. Sa LOAD i
STORE je simboliki oznaeno polje koda operacije, a sa a i b specifikacije izvorinog i
odredinog operanda, respektivno. Instrukcijom LOAD se operand sa izvorita a prenosi u
akumulator kao implicitno odredite, dok se instrukcijom STORE sadraj akumulatora kao
implicitno izvorite prenosi u odredite b. U zavisnosti od specificiranog naina adresiranja a
moe da bude registar procesora, memorijska lokacija (a kod procesora kod kojih je ulazno
izlazni prostor memorijski preslikan i registar kontrolera periferije) i neposredna veliina u
instrukciji. Slina je situacije i sa b, pre emu, zbog toga to se radi o odreditu, b samo ne
moe da bude neposredna veliina u instrukciji. U sluaju instrukcije LOAD specificiranjem
odgovarajuih adresiranja za izvorite a mogue je u akumulator preneti operand iz memorije
(registra kontrolera periferije), iz registra procesora i neposredno iz instrukcije. U sluaju
instrukcije STORE specificiranjem odgovarajuih adresiranja za odredite b mogue je iz
akumulator preneti operand u memoriju (registar kontrolera periferije) i registar procesora,
dok prenos u instrukciju korienjem neposrednog adresiranja nije dozvoljen.
PUSH a
POP b
Ove instrukcija se javlja kod procesora sa nulaadresnim formatom instrukcija. Sa PUSH i
POP je simboliki oznaeno polje koda operacije, a sa a i b specifikacije izvorinog i
odredinog operanda, respektivno. Instrukcijom PUSH se operand sa izvorita a prenosi na
stek kao implicitno odredite, dok se instrukcijom POP sadraj sa steka kao implicitno
izvorite prenosi u odredite b. U zavisnosti od specificiranog naina adresiranja a moe da
bude registar procesora, memorijska lokacija (a kod procesora kod kojih je ulazno izlazni
prostor memorijski preslikan i registar kontrolera periferije) i neposredna veliina u
instrukciji. Slina je situacije i sa b, pre emu, zbog toga to se radi o odreditu, b samo ne
moe da bude neposredna veliina u instrukciji. U sluaju instrukcije PUSH specificiranjem
odgovarajuih adresiranja za izvorite a mogue je na stek preneti operand iz memorije
(registra kontrolera periferije), iz registra procesora i neposredno iz instrukcije. U sluaju
instrukcije POP specificiranjem odgovarajuih adresiranja za odredite b mogue je sa steka
preneti operand u memoriju (registar kontrolera periferije) i registar procesora, dok prenos u
instrukciju korienjem neposrednog adresiranja nije dozvoljen.
1.5.1.2 ARITMETIKE INSTRUKCIJE
Aritmetikim instrukcijama se realizuju standardne aritmetike operacije sabiranja,
oduzimanja, mnoenja i deljenja.
ADD a, b, c
Ovo je format instrukcije sabiranja kod procesora sa troadresnim formatom instrukcija. Sa
ADD je simboliki oznaeno polje koda operacije, a sa a, b i c specifikacije dva izvorina i
jednog odredinog operanda. U daljim razmatranjima e se uzeti da su a i b izvorita, a c
44
45
46
kada se binarne rei interpretiraju kao celobrojne veliine bez znaka i kao celobrojne veliine
sa znakom u drugom komplementu.
Kao primer za operaciju sabiranja uzete su binarne rei 1010 i 0010 za koje se uobiajenim
postupkom sabiranja binarnih rei dobija binarna re 1100. Ako se binarne rei interpretiraju
kao celobrojne veliine bez znaka, tada je
- binarna re prvog sabirka 1010 jednaka decimalno +10,
- binarna re drugog sabirka 0010 jednaka decimalno +2 i
- binarna re dobijene sume 1100 jednaka decimalno +12,
to jeste korektan rezultat. Meutim, ako se iste binarne rei interpretiraju kao celobrojne
veliine sa znakom u drugom komplementu, tada je
- binarna re prvog sabirka 1010 jednaka decimalno -6,
- binarna re drugog sabirka 0010 jednako decimalno +2 i
- binarna re dobijene sume 1100 jednaka decimalno -4,
to, takoe, jeste korektan rezultat.
Kao primer za operaciju oduzimanja uzete su iste binarne rei 1010 i 0010 za koje se
uobiajenim postupkom oduzimanja binarnih rei dobija binarna re 1000. Ako se binarne rei
interpretiraju kao celobrojne veliine bez znaka, tada je
- binarna re prvog sabirka 1010 jednaka decimalno +10,
- binarna re drugog sabirka 0010 jednaka decimalno +2 i
- binarna re dobijene sume 1000 jednaka decimalno +8,
to jeste korektan rezultat. Meutim, ako se iste binarne rei interpretiraju kao celobrojne
veliine sa znakom u drugom komplementu, tada je
- binarna re prvog sabirka 1010 jednaka decimalno -6,
- binarna re drugog sabirka 0010 jednaka decimalno +2 i
- binarna re dobijene sume 1000 jednaka decimalno -8,
to, takoe, jeste korektan rezultat.
Zbog toga za operaciju sabiranja nad celobrojnim veliinama bez znaka i celobrojnim
veliinama sa znakom u drugom komplementu iste duine ne postoji potreba za dva razliita
koda operacije. Kao ilustracija se moe uzeti ranije pomenuti procesor koji od tipova podataka
podrava celobrojne veliine bez znaka duine 8, 16, 32 i 64 bita, celobrojne veliine sa
znakom predstavljene u drugom komplementu duine 8, 16, 32 i 64 bita i veliine u
pokretnom zarezu duine 32 i 64 bita. U ovom procesoru mora da postoji 6 kodova operacija
za operaciju sabiranja i to 4 koda operacije za operaciju sabiranja nad celobrojnim veliinama
bez znaka i celobrojnim veliinama sa znakom u drugom komplementu duine 8, 16, 32 i 64
bita, kao i 2 koda operacije za operaciju sabiranja nad veliinama u pokretnom zarezu duine
32 i 64 bita. Isto vai i za operaciju oduzimanja.
Meu aritmetikim instrukcijama se pojavljuje i poseban sluaji operacije sabiranja kod
koje je implicitno odreeno da je vrednost koja se sabira jednaka 1, kao i poseban sluaj
operacije oduzimanja kod koje je implicitno odreeno da je vrednost koja se oduzima jednaka
1. To su instrukcije inkrementiranja i dekrementiranja.
INC a, b
Ova je format instrukcije inkrementiranja koji se javlja kod procesora sa dvoadresnim
formatom instrukcija. Sa INC je simboliki oznaeno polje koda operacije, a sa a i b
specifikacije izvorinog i odredinog operanda, respektivno. U daljim razmatranjima e se
uzeti da je a izvorite a b odredite, mada se esto deava i da je a odredite a b izvorite.
Tokom izvravanja ove instrukcije sa lokacije specificirane sa a najpre se ita izvorini
operand, zatim se njegova vrednost uvea za 1 i na kraju se dobijeni rezultat smeta u lokaciju
47
48
49
Indikator V se jedino postavlja ukoliko se oduzimanje realizuje nad tipovima podataka kod
kojih postoje i pozitivne i negativne vrednosti, dok se tada indikator C postavlja na vrednost
0. Indikator V se postavlja na vrednost 1 ukoliko je prvi izvorini operand pozitivna veliina i
drugi izvorini operand je negativna veliina i imaju takve vrednosti da se prilikom njihovog
odizimanja javlja prekoraenje. Indikator V se postavlja na vrednost 1 i ukoliko je prvi
izvorini operand negativna veliina i drugi izvorini operand je pozitivna veliina i imaju
takve vrednosti da se prilikom njihovog odizimanja javlja prekoraenje. U suprotnom sluaje
indikator V ima vrednost 0.
Ovakvo postavljanje indikatora N, Z, C i V je deo jednog od mehanizama za realizaciju
uslovnih skokova u programu. Taj mehanizam predvia da se instrukcijom CMP na osnovu
vrednosti dva izvorina operanda postave indikatori N, Z, C i V i da se potom instrukcijom
uslovnog skoka vri odgovarajua provera indikatora N, Z, C i V da bi se utvrdilo da li je
uslov za skok ispunjen ili nije i da se ukoliko je uslov ispunjem skae u programu, dok se u
suprotnom produava sa sekvencijalnim izvravanjem programa (tabela 1). Uslovnih skokova
ima za svaku od 6 relacija i to jednako, nije jednako, vee, vee ili jednako, manje i manje ili
jednako, pri emu se relacije vee, vee ili jednako, manje i manje ili jednako definiu
posebno za aritmetiku bez znaka i za aritmetiku sa znakom. Zbog toga ima 10 uslovnih
skokova. Kao ilustracija ovog mehanizma za realizaciju uslovnih skokova u daljem tekstu je
dato nekoliko primera.
Tabela 1 Uslovi za skok
instrukcija
BEQL
BNEQ
BGRTU
BGREU
BLSSU
BLEQU
BGRT
BGRE
BLSS
BLEQ
znaenje
jednako
nejednako
vee nego bez znaka
vee nego ili jednako bez znaka
manje nego bez znaka
manje nego ili jednako bez znaka
vee nego sa znakom
vee nego ili jednako sa znakom
manje nego sa znakom
manje nego ili jednako sa znakom
uslov
Z=1
Z=0
CZ=0
C=0
C=1
CZ=1
(N V) Z = 0
NV=0
(N V) = 1
(N V) Z = 1
Kao prvi primer za operaciju CMP uzete su binarne rei 0101 i 0101. Ukoliko se
posmatraju binarne rei 0101 i 0101 vidi se da su jednake. Na osnovu toga se zakljuuje da
uslov za skok treba da bude ispunjen za instrukcije BEQL (jednako), BGREU (vee nego ili
jednako bez znaka), BLEQU (manje nego ili jednako bez znaka), BGRE (vee nego ili
jednako sa znakom) i BLEQ (manje nego ili jednako sa znakom), dok uslovi za skok ne treba
da budu ispunjeni za instrukcije BNEQ (nejednako), BGRTU (vee nego bez znaka), BLSSU
(manje nego bez znaka), BGRT (vee nego sa znakom) i BLSS (manje nego sa znakom).
Ukoliko se sada u okviru izvravanja instrukcije CMP realizuje oduzimanje binarnih rei
0101 i 0101, kao rezultat se dobija binarna re 0000. Na osnovu toga se postavljaju N=0 i
Z=1. Ako se prilikom ovog oduzimanja binarne rei 0101 i 0101 interpretiraju kao celobrojne
veliine bez znaka, prilikom ovog oduzimanja nema pozajmice. Na osnovu toga se postavlja
C=0. Ako se prilikom ovog oduzimanja binarne rei 0101 i 0101 interpretiraju kao celobrojne
veliine bez znaka, prilikom ovog oduzimanja nema prekoraenja. Na osnovu toga je V=0.
Dobijene vrednosti za N, Z, C i V sada treba zameniti u izrazima za uslov koji treba da bude
ispunjen za svaki od 10 uslovnih skokova da bi se skok realizovao (tabela ). Na osnovu toga
se dobija da je uslov
50
51
jednako bez znaka), BLSS (manje nego sa znakom) i BLEQ (manje nego ili jednako sa
znakom), dok uslovi za skok ne treba da budu ispunjeni za instrukcije BEQL (jednako),
BGRTU (vee nego bez znaka), BGREU (vee nego ili jednako bez znaka), BGRT (vee nego
sa znakom) i BGRE (vee nego ili jednako sa znakom),
Ukoliko se sada u okviru izvravanja instrukcije CMP realizuje oduzimanje binarnih rei
0010 i 0011, kao rezultat se dobija binarna re 1111. Na osnovu toga se postavljaju N=1 i Z=0.
Ako se prilikom ovog oduzimanja binarne rei 0010 i 0011 interpretiraju kao celobrojne
veliine bez znaka, prilikom ovog oduzimanja ima pozajmice. Na osnovu toga se postavlja
C=1. Ako se prilikom ovog oduzimanja binarne rei 0010 i 0011 interpretiraju kao celobrojne
veliine sa znakom u drugom komplementu, prilikom ovog oduzimanja nema prekoraenja.
Na osnovu toga je V=0. Dobijene vrednosti za N, Z, C i V sada treba zameniti u izrazima za
uslov koji treba da bude ispunjen za svaki od 10 uslovnih skokova da bi se skok realizovao
(tabela ). Na osnovu toga se dobija da je uslov
Z = 0 za instrukciju BNEQ (nejednako) je ispunjen,
C = 1 za instrukciju BLSSU (manje nego bez znaka) je ispunjen,
C Z = 1 za instrukciju BLEQU (manje nego ili jednako bez znaka) je ispunjen,
(N V) = 1 za instrukcijuBLSS (manje nego sa znakom) je ispunjen.
(N V) Z = 1 za instrukciju BLEQ (manje nego ili jednako sa znakom) je ispunjen.
i da uslov
Z = 1 za instrukciju BEQL (jednako) nije ispunjen,
C Z = 0 za instrukciju BGRTU (vee nego bez znaka) nije ispunjen,
C = 0 za instrukciju BGREU (vee nego ili jednako bez znaka) nije ispunjen,
(N V) Z = 0 za instrukciju BGRT (vee nego sa znakom) nije ispunjen i
N V = 0 za instrukciju BGRE (vee nego ili jednako sa znakom) nije ispunjen.
Kao etvrti primer za operaciju CMP uzete su binarne rei 1110 i 1011. Ukoliko se
posmatraju binarne rei 1110 i 1011 vidi se da su nejednake. Takoe se vidi da bez obzira na
to da li se binarne rei 1110 i 1011 posmatraju kao celobrojne veliine bez znaka ili kao
celobrojne veliine sa znakom u drugom komplementu, da je binarna re 1110 vea od
binarne rei 1011. Na osnovu toga se zakljuuje da uslov za skok treba da bude ispunjen za
instrukcije BNEQ (nejednako), BGRTU (vee nego bez znaka), BGREU (vee nego ili
jednako bez znaka), BGRT (vee nego sa znakom) i BGRE (vee nego ili jednako sa znakom),
dok uslovi za skok ne treba da budu ispunjeni za instrukcije BEQL (jednako), BLSSU (manje
nego bez znaka), BLEQU (manje nego ili jednako bez znaka), BLSS (manje nego sa znakom)
i BLEQ (manje nego ili jednako sa znakom).
Ukoliko se sada u okviru izvravanja instrukcije CMP realizuje oduzimanje binarnih rei
1110 i 1011, kao rezultat se dobija binarna re 0011. Na osnovu toga se postavljaju N=0 i Z=0.
Ako se prilikom ovog oduzimanja binarne rei 1110 i 1011 interpretiraju kao celobrojne
veliine bez znaka, prilikom ovog oduzimanja nema pozajmice. Na osnovu toga se postavlja
C=0. Ako se prilikom ovog oduzimanja binarne rei 1110 i 1011 interpretiraju kao celobrojne
veliine sa znakom u drugom komplementu, prilikom ovog oduzimanja nema prekoraenja.
Na osnovu toga je V=0. Dobijene vrednosti za N, Z, C i V sada treba zameniti u izrazima za
uslov koji treba da bude ispunjen za svaki od 10 uslovnih skokova da bi se skok realizovao
(tabela ). Na osnovu toga se dobija da je uslov
Z = 0 za instrukciju BNEQ (nejednako) je ispunjen,
C Z = 0 za instrukciju BGRTU (vee nego bez znaka) je ispunjen
C = 0 za instrukciju BGREU (vee nego ili jednako bez znaka) ispunjen,
(N V) Z = 0 za instrukcijuBGRT (vee nego sa znakom) je ispunjen
52
53
BLSSU (manje nego bez znaka), BLEQU (manje nego ili jednako bez znaka), BGRT (vee
nego sa znakom) i BGRE (vee nego ili jednako sa znakom).
Ukoliko se sada u okviru izvravanja instrukcije CMP realizuje oduzimanje binarnih rei
1010 i 0010, kao rezultat se dobija binarna re 1000. Na osnovu toga se postavljaju N=1 i
Z=0. Ako se prilikom ovog oduzimanja binarne rei 1010 i 0010 interpretiraju kao celobrojne
veliine bez znaka, prilikom ovog oduzimanja nema pozajmice. Na osnovu toga se postavlja
C=0. Ako se prilikom ovog oduzimanja binarne rei 1010 i 0010 interpretiraju kao celobrojne
veliine sa znakom u drugom komplementu, prilikom ovog oduzimanja nema prekoraenja.
Na osnovu toga je V=0. Dobijene vrednosti za N, Z, C i V sada treba zameniti u izrazima za
uslov koji treba da bude ispunjen za svaki od 10 uslovnih skokova da bi se skok realizovao
(tabela ). Na osnovu toga se dobija da je uslov
Z = 0 za instrukciju BNEQ (nejednako) je ispunjen,
C Z = 0 za instrukciju BGRTU (vee nego bez znaka) je ispunjen
C = 0 za instrukciju BGREU (vee nego ili jednako bez znaka) ispunjen,
(N V) = 1 za instrukcijuBLSS (manje nego sa znakom) je ispunjen.
(N V) Z = 1 za instrukciju BLEQ (manje nego ili jednako sa znakom) je ispunjen
i da uslov
Z = 1 za instrukciju BEQL (jednako) nije ispunjen
C = 1 za instrukciju BLSSU (manje nego bez znaka) nije ispunjen,
C Z = 1 za instrukciju BLEQU (manje nego ili jednako bez znaka) nije ispunjen
(N V) Z = 0 za instrukcijuBGRT (vee nego sa znakom) nije ispunjen
N V = 0 za instrukciju BGRE (vee nego ili jednako sa znakom) nije ispunjen.
Kao sedmi primer za operaciju CMP uzete su binarne rei 0010 i 1010. Ukoliko se
posmatraju binarne rei 0010 i 1010 vidi se da su nejednake. Takoe se vidi da ukoliko se
binarne rei 0010 i 1010 posmatraju kao celobrojne veliine bez znaka da je binarna re 0010
manja od binarne rei 1010, dok u sluaju kada se binarne rei 0010 i 1010 posmatraju kao
celobrojne veliine sa znakom u drugom komplementu, da je binarna re 0010 vea od
binarne rei 1010. Na osnovu toga se zakljuuje da uslov za skok treba da bude ispunjen za
instrukcije BNEQ (nejednako), BLSSU (manje nego bez znaka), BLEQU (manje nego ili
jednako bez znaka), BGRT (vee nego sa znakom) i BGRE (vee nego ili jednako sa znakom),
dok uslovi za skok ne treba da budu ispunjeni za instrukcije BEQL (jednako), BGRTU (vee
nego bez znaka), BGREU (vee nego ili jednako bez znaka), BLSS (manje nego sa znakom) i
BLEQ (manje nego ili jednako sa znakom).
Ukoliko se sada u okviru izvravanja instrukcije CMP realizuje oduzimanje binarnih rei
0010 i 1010, kao rezultat se dobija binarna re 1000. Na osnovu toga se postavljaju N=1 i
Z=0. Ako se prilikom ovog oduzimanja binarne rei 0010 i 1010 interpretiraju kao celobrojne
veliine bez znaka, prilikom ovog oduzimanja ima pozajmice. Na osnovu toga se postavlja
C=1. Ako se prilikom ovog oduzimanja binarne rei 0010 i 1010 interpretiraju kao celobrojne
veliine sa znakom u drugom komplementu, prilikom ovog oduzimanja ima prekoraenja. Na
osnovu toga je V=1. Dobijene vrednosti za N, Z, C i V sada treba zameniti u izrazima za uslov
koji treba da bude ispunjen za svaki od 10 uslovnih skokova da bi se skok realizovao (tabela ).
Na osnovu toga se dobija da je uslov
Z = 0 za instrukciju BNEQ (nejednako) je ispunjen,
C = 1 za instrukciju BLSSU (manje nego bez znaka) je ispunjen,
C Z = 1 za instrukciju BLEQU (manje nego ili jednako bez znaka) je ispunjen,
(N V) Z = 0 za instrukciju BGRT (vee nego sa znakom) nije ispunjen i
N V = 0 za instrukciju BGRE (vee nego ili jednako sa znakom) nije ispunjen
54
i da uslov
Z = 1 za instrukciju BEQL (jednako) nije ispunjen,
C Z = 0 za instrukciju BGRTU (vee nego bez znaka) nije ispunjen,
C = 0 za instrukciju BGREU (vee nego ili jednako bez znaka) nije ispunjen,
(N V) = 1 za instrukcijuBLSS (manje nego sa znakom) je ispunjen.
(N V) Z = 1 za instrukciju BLEQ (manje nego ili jednako sa znakom) je ispunjen.
U datim primerima je ilustrovan jedan od mehanizama za realizaciju uslovnih skokova u
programu koji predvia da se instrukcijom CMP na osnovu vrednosti dva izvorina operanda
postave indikatori N, Z, C i V i da se potom instrukcijom uslovnog skoka vri odgovarajua
provera indikatora N, Z, C i V da bi se utvrdilo da li je uslov za skok ispunjen ili nije i da bi se
ukoliko je uslov ispunjem napravio skok u programu, dok bi se u suprotnom produilo sa
sekvencijalnim izvravanjem programa (tabela 1). To praktino znai da u program treba
ubaciti instrukciju CMP i jednu instrukciju uslovnog skoka na svim onim mestima na kojima
se realizuju uslovni skokovi. Ubacivanje ovih instrukcija u program znaajno poveava
ukupan broj instrukcija programa, to direktno utie na efikasnost izvravanja programa.
Da bi se umanjili negativni efekti ubacivanja instrukcija CMP na mestima uslovnih
granjanja, sastavni deo izvravanja svih aritmetikih operacija je i postavljanje indikatora N,
Z, C i V na osnovu rezultata izvrene operacije. Indikator N se postavlja na vrednost
najstarijeg bita rezultata operacije. Indikator Z se postavlja na vrednost 1 ukoliko je rezultat
izvrene operacije nula, dok se u suprotnom sluaju postavlja na vrednost 0. Indikator C se
jedino postavlja ukoliko se operacija sabiranja ili oduzimanja realizuje nad tipovima podataka
kod kojih postoje jedino pozitivne vrednosti, dok se tada indikator V postavlja na vrednost 0.
Indikator C se postavlja na vrednost 1 ukoliko postoji prenos ili pozajmica kod operacija
sabiranja i oduzimanja, respektivno, dok se za operacije mnoenja i deljenja posebno definie.
Indikator V se jedino postavlja ukoliko se operacija sabiranja ili oduzimanja realizuje nad
tipovima podataka kod kojih postoje i pozitivne i negativne vrednosti, dok se tada indikator C
postavlja na vrednost 0. Indikator V se postavlja na vrednost 1 ukoliko postoji prekoraenje
kod operacija sabiranja i oduzimanja, dok se za operacije mnoenja i deljenja posebno
definie. Stoga kad god je mogue u programima realizovati uslovne skokove na osnovu
vrednosti indikatora N, Z, C i V koje je postavila zadnja aritmetika instrukcija pre instrukcije
instrukcije skoka, nema potrebe stavljati instrukciju CMP kojom bi se uporeivala dobijena
vrednost aritmetike operacije sa 0.
Kao primer za operaciju ADD uzete su binarne rei 1010 i 0010 ijim se sabiranjem dobija
binarna re 1100. Ukoliko se posmatra binarna re 1100 vidi se da je razliita od nule. Takoe
se vidi da ukoliko se binarne rei 1010 i 0010 posmatraju kao celobrojne veliine bez znaka
da je binarna re 1010 vea od binarne rei 0010, dok u sluaju kada se binarne rei 1010 i
0010 posmatraju kao celobrojne veliine sa znakom u drugom komplementu, da je binarna re
1010 manja od binarne rei 0010. Na osnovu toga se zakljuuje da uslov za skok treba da
bude ispunjen za instrukcije BNEQ (nejednako), BGRTU (vee nego bez znaka), BGREU
(vee nego ili jednako bez znaka), BLSS (manje nego sa znakom) i BLEQ (manje nego ili
jednako sa znakom), dok uslovi za skok ne treba da budu ispunjeni za instrukcije BEQL
(jednako), BLSSU (manje nego bez znaka), BLEQU (manje nego ili jednako bez znaka),
BGRT (vee nego sa znakom) i BGRE (vee nego ili jednako sa znakom).
Ukoliko se sada u okviru izvravanja instrukcije ADD realizuje sabiranje binarnih rei
1010 i 0010, kao rezultat se dobija binarna re 1100. Na osnovu toga se postavljaju N=1 i
Z=0. Ako se prilikom ovog sabiranja binarne rei 1010 i 0010 interpretiraju kao celobrojne
veliine bez znaka, prilikom ovog sabiranja nema prenosa. Na osnovu toga se postavlja C=0.
55
Ako se prilikom ovog sabiranja binarne rei 1010 i 0010 interpretiraju kao celobrojne veliine
sa znakom u drugom komplementu, prilikom ovog sabairanja nema prekoraenja. Na osnovu
toga je V=0. Dobijene vrednosti za N, Z, C i V sada treba zameniti u izrazima za uslov koji
treba da bude ispunjen za svaki od 10 uslovnih skokova da bi se skok realizovao (tabela ). Na
osnovu toga se dobija da je uslov
Z = 0 za instrukciju BNEQ (nejednako) je ispunjen,
C Z = 0 za instrukciju BGRTU (vee nego bez znaka) je ispunjen
C = 0 za instrukciju BGREU (vee nego ili jednako bez znaka) ispunjen,
(N V) = 1 za instrukcijuBLSS (manje nego sa znakom) je ispunjen.
(N V) Z = 1 za instrukciju BLEQ (manje nego ili jednako sa znakom) je ispunjen
i da uslov
Z = 1 za instrukciju BEQL (jednako) nije ispunjen
C = 1 za instrukciju BLSSU (manje nego bez znaka) nije ispunjen,
C Z = 1 za instrukciju BLEQU (manje nego ili jednako bez znaka) nije ispunjen
(N V) Z = 0 za instrukcijuBGRT (vee nego sa znakom) nije ispunjen
N V = 0 za instrukciju BGRE (vee nego ili jednako sa znakom) nije ispunjen.
1.5.1.3 LOGIKE INSTRUKCIJE
Logikim instrukcijama se realizuju standardne logike operacije I, ILI, ekskluzivno ILI i
komplementiranja. Formati instrukcija za logike operacije I, ILI i ekskluzivno ILI za
procesore sa troadresnim, dvoadresnim, jednoadresnim i nulaadresnim formatima instrukcija
su:
AND a, b, c
AND a, b
AND a
AND
OR a, b, c
OR a, b
OR a
OR
XOR a, b, c
XOR a, b
XOR a
XOR
pri emu su sa AND, OR i XOR simboliki oznaena polja koda operacije za logike
operacije I, ILI i ekskluzivno ILI, respektivno. Eksplicitna specifikacija izvorinih i odredinih
operanada poljima a, b i c je ista kao i kod instrukcije sabiranja. Implicitna izvorita i
odredita u formatima isntrukcija gde ih ima, su, takoe, ista kao i kod instrukcije sabiranja.
Podaci nad kojima se izvravaju logike operacije I, ILI i ekskluzivno ILI su binarne rei,
pri emu to moe da se ini na vie razliitih duina, kao na primer bajt, dva bajta, etiri bajta
itd. Za svaku moguu duinu binarnih rei mora da postoji poseban kod operacije za svaku od
operacija I, ILI i ekskluzivno ILI. Kao ilustracija moe se uzeti da ako u procesoru binarne
rei mogu da budu duine 8, 16, 32 i 64 bita, mora da postoje 4 kodova operacija za operaciju
I.
Formati instrukcija za logiku operaciju komplementiranja za procesore sa dvoadresnim,
jednoadresnim i nulaadresnim formatima instrukcija su:
NOT a, b
NOT a
56
NOT
pri emu su sa NOT simboliki oznaeno polje koda operacije za logiku operaciju
komplementiranja. Eksplicitna specifikacija izvorinih i odredinih operanada poljima a i b je
ista kao i kod instrukcije inkrementiranja. Implicitna izvorita i odredita u formatima
isntrukcija gde ih ima, su, takoe, ista kao i kod instrukcije inkrementiranja.
Podaci nad kojima se izvrava logika operacija NOT su binarne rei, pri emu to moe da
se ini na vie razliitih duina, kao na primer bajt, dva bajta, etiri bajta itd. Za svaku
moguu duinu binarnih rei mora da postoji poseban kod operacije za operacija NOT. Kao
ilustracija moe se uzeti da ako u procesoru binarne rei mogu da budu duine 8, 16, 32 i 64
bita, mora da postoje 4 kodova operacija za operaciju NOT.
Sastavni deo izvravanja svih logikih instrukcija je i postavljanje indikatora N, Z, C i V na
osnovu dobijenog rezultata. Indikator N se postavlja na vrednost najstarijeg bita rezultata
operacije. Indikator Z se postavlja na vrednost 1 ukoliko je rezultat izvrene operacije nula,
dok se u suprotnom sluaju postavlja na vrednost 0. Indikatori C i V se postavljaju na
vrednost 0. To omoguava da se u situacijama kada to ima smisla posle logike instrukcije
stavi instrukcija uslognog skoka. Pri tome skok na jednako i nejednako ima smisla da se
koristi, jer ukazuje da li je binarna re dobijena kao rezultat neke logike operacije 0 ili
razliita od 0. Ostali uslovni skokovi nemaju smisla da se koriste, jer oni pretpostavljaju da je
binarna re rezultata logike operacije prilikom postavljanja indikatora C i V interpretirana
kao celobrojna vrednost bez znaka i sa znakom u drugom komplementu, respektivno, to nije
sluaj.
Meu logikim instrukcijama se pojavljuje i poseban sluaji operacije logiko I kod koje se
rezultat logike I operacije nikuda ne upisuje, ve se samo vri provera dobijene vrednosti i na
osnovu toga vri postavljanje indikatora N, Z, C i V u programskoj statusnoj rei PSW
procesora. Ova instrukcija se naziva logiko uporeivanje. Formati instrukcije uporeivanja
za procesore sa troadresnim, dvoadresnim, jednoadresnim i nulaadresnim formatima
instrukcija su:
TST a, b, c
TST a, b
TST a
TST
pri emu je sa TST simboliki oznaeno polje koda operacije za operaciju logikog
uporeivanja. Eksplicitna specifikacija izvorinih i odredinih operanada poljima a, b i c je
ista kao i kod instrukcije CMP. Implicitna izvorita i odredita u formatima isntrukcija gde ih
ima, su, takoe, ista kao i kod instrukcije CMP. Podaci nad kojima se izvrava operacija
logikog uporeivanja su binarne rei, pri emu to moe da se ini na vie razliitih duina,
kao na primer bajt, dva bajta, etiri bajta itd. Za svaku moguu duinu binarnih rei mora da
postoji poseban kod operacije Kao ilustracija moe se uzeti da ako u procesoru binarne rei
mogu da budu duine 8, 16, 32 i 64 bita, mora da postoje 4 koda operacije za operaciju
logikog uporeivanja.
1.5.1.4 INSTRUKCIJE POMERANJA
Instrukcijama pomeranja se realizuje pomeranje binarne rei za jedno mesto udesno ili
jedno mesto ulevo (slika 26).
57
C
A0
0
An-1
An-1
An-2
An-3
...
Ai+1
Ai
Ai-1
...
A2
A1
A0
Fn-1
Fn-2
Fn-3
...
Fi+1
Fi
Fi-1
...
F2
F1
F0
An-1
An-2
An-3
...
Ai+1
Ai
Ai-1
...
A2
A1
A0
Fn-1
Fn-2
Fn-3
...
Fi+1
Fi
Fi-1
...
F2
F1
F0
C
An-1
0
0
58
pomeranje su binarne rei koje mogu da budu na vie razliitih duina, kao na primer bajt,
dva bajta, etiri bajta itd. Za svaku moguu duinu binarnih rei mora da postoji poseban kod
operacije za operacija ASR. Kao ilustracija moe se uzeti da ako u procesoru binarne rei
mogu da budu duine 8, 16, 32 i 64 bita, mora da postoje 4 kodova operacija za operaciju
ASR.
Slina je situacija i sa formatima instrukcija za operacije oduzimanja, mnoenja i deljenja.
Formati instrukcija za ove operacije za procesore sa troadresnim, dvoadresnim, jednoadresnim
i nulaadresnim formatima instrukcija su:
LSR a, b, c
LSR a, b
LSR a
LSR
ROR a, b, c
ROR a, b
ROR a
ROR
RORC a, b, c
RORC a, b
RORC a
RORC
ASL a, b, c
ASL a, b
ASL a
ASL
LSL a, b, c
LSL a, b
LSL a
LSL ROR a, b, c
ROL a, b
ROL a
ROL
ROLC a, b, c
ROLC a, b
ROLC a
ROLC
Eksplicitna specifikacija izvorinih i odredinih operanada poljima a, b i c je ista kao i kod
instrukcije ASR. Implicitna izvorita i odredita u formatima isntrukcija gde ih ima, su,
takoe, ista kao i kod instrukcije sabiranja.
Podaci nad kojima se izvravaju pomeranja su binarne rei, pri emu to moe da se ini na
vie razliitih duina, kao na primer bajt, dva bajta, etiri bajta itd. Za svaku moguu duinu
binarnih rei mora da postoji poseban kod operacije za svaku od operacija pomeranja. Kao
ilustracija moe se uzeti da ako u procesoru binarne rei mogu da budu duine 8, 16, 32 i 64
bita, mora da postoje 4 kodova operacija za svaku operaciju pomeranja.
Ukoliko se binarna re 1000 pomeri logiki udesno dobija se binarna re 0100. Ukoliko se
sada i binarna re 0100 pomeri logiki udesno dobija se 0010. Ukoliko se binarne rei 1000,
0100 i 0010 interpretiraju kao celobrojne veliine bez znaka, i time predstavljaju vrednosti 8,
4 i 2, uoava se da se logikim pomeranjem udesno realizuje deljenje sa 2. Meutim, ukoliko
se binarne rei 1000, 0100 i 0010 interpretiraju kao celobrojne veliine sa znakom u drugom
59
JMPIND a
pri emu je sa JMPIND simboliki oznaeno polje koda operacije, a sa a polje sa
specifikacijom adrese memorijske lokacije na kojoj se nalazi instrukcija na ije izvravanje
treba prei. Polje a ima identinu strukturu kao polja u prethodno razmatranim instrukcijama
kojima se eksplicitno specificiraju izvorini i odredini operandi korienjem razliitih naina
adresiranja (odeljak 1.4), pri emu su dozvoljena samo memorijska adresiranja, dok direktno
registarsko i neposredno adresiranje nisu dozvoljeni. Izvravanje instrukcije JMPIND se
sastoji u sraunavanju adrese memorijske lokacije na osnovu specificiranog memorijskog
adresiranja i upisivanju sraunate adrese memorijske lokacije u programski broja PC.
Kao ilustracija se moe uzeti da je najpre nekim instrukcijama pre instrukcije JMPIND a
kao adresa memorijske lokacije na koju treba skoiti sraunata vrednost 3579, da je ta
vrednost upisana u adresni registar AR5 i da instrukcijom JMPIND a vrednost 3579 iz
adresnog registra AR5 treba upisati u programski broja PC. Ukoliko je u instrukciji JMPIND
a poljem a specificirano registarsko indirektno adresiranje i kao adresni registar specificiran
registar AR5, tada sadraj 3579 registra AR5 predstavlja adresu na koju treba skoiti, pa se
vrednost 3579 upisuje u programski broja PC.
Kao ilustracija se moe uzeti da je najpre nekim instrukcijama pre instrukcije JMPIND a
kao adresa memorijske lokacije na koju treba skoiti sraunata vrednost 3579, da je ta
vrednost upisana u memorijsku lokaciju na adresi 1234 i da instrukcijom JMPIND a vrednost
3579 iz memorijske lokacije na adresi 1234 treba upisati u programski broja PC. Ukoliko je
u instrukciji JMPIND a poljem a specificirano memorijsko indirektno adresiranje i adresa
1234, tada 1234 predstavlja adresu memorijske lokacije na kojoj se nalazi vrednost 3579 koja
predstavlja adresu memorijske lokacije na koju treba skoiti, pa se vrednost 3579 upisuje u
programski broja PC.
Efekat upisivanja adrese skoka 3579 u programski broja PC koji se ostvaruje instrukcijom
JMP 3579
mogue je ostvariti i instrukcijom
JMPIND a
ukoliko je adresa skoka 3579 poznata u vreme prevoenja. Ukoliko je u instrukciji JMPIND a
poljem a specificirano memorijsko direktno adresiranje i adresa 3579, tada 3579 predstavlja
predstavlja adresu memorijske lokacije na koju treba skoiti, pa se ta vrednost upisuje u
programski broja PC.
Instrukcije uslovnog skoka
Format instrukcija uslovnog skoka je
BEQL pom, BNEQ pom,
BGRTU pom, BGREU pom, BLSSU pom, BLEQU pom,
BGRT pom, BGRE pom, BLSS pom, BLEQ pom,
BNEG pom, BNNG pom, BOVF pom i BNVF disp
pri emu je sa BEQL, BNEQ, BGRTU, BGREU, BLSSU, BLEQU, BGRT, BGRE, BLSS,
BLEQ, BNEG, BNNG, BOVF i BNVF simboliki oznaeno polje koda operacije, a sa pom
polje sa vrednou pomeraja sa kojim treba napraviti relativan skok u odnosu na tekuu
vrednost programskog brojaa ukoliko je uslov za skok ispunjen. Tokom izvravanja
instrukcije uslovnog skoka se sabiranjem tekue vrednost programskog brojaa PC i pomeraja
pom sraunava adresa memorijske lokacije skoka, na osnovu vrednosti indikatora N, Z, C i V
se proverava da li je uslov za skok specificiran poljem koda operacije ispunjen ili ne i na
osnovu toga sraunata adresa memorijske lokacije skoka upisuje ili ne upisuje u programski
broja PC, respektivno. Time se ili prelazi na izvravanje prve instrukcije u novoj sekvenci
61
62
BEQL
BNEQ
BGRTU
BGREU
BLSSU
BLEQU
BGRT
BGRE
BLSS
BLEQ
BNEG
BNNG
BOVF
BNVF
znaenje
skok na jednako
skok na nejednako
skok na vee nego (bez znaka)
skok na vee nego ili jednako (bez znaka)
skok na manje nego (bez znaka)
skok na manje nego ili jednako (bez znaka)
skok na vee nego (sa znakom)
skok na vee nego ili jednako (sa znakom)
skok na manje nego (sa znakom)
skok na manje nego ili jednako (sa znakom)
skok na N = 1
skok na N = 0
skok na V = 1
skok na V = 0
uslov
Z=1
Z=0
CZ=0
C=0
C=1
CZ=1
(N V) Z = 0
NV=0
(N V) = 1
(N V) Z = 1
N=1
N=0
V=1
V=0
63
RTS
pri emu je sa RTS simboliki oznaeno polje koda operacije. Instrukcija RTS mora da bude
zadnja instrukcija potprograma. Izvravanje instrukcije RTS se sastoji u skidanju vrednosti sa
steka i upisivanju u programski broja PC. Ovde se podrazumeva da je tokom izvravanja
potprograma broj stavljanja vrednosti na stek jednaku broju skidanja vrednosti sa steka, ime
se obezbeuje da instrukcija RTS skida sa steka i upisuje u programski broja PC onu
vrednost koju je instrukcija JSR stavila na stek.
Instrukcija skoka na prekidnu rutinu i instrukcija povratka iz prekidne rutine
Format instrukcije skoka na prekidnu rutinu je
INT adresa
pri emu je sa INT simboliki oznaeno polje koda operacije, a sa adresa polje sa vrednou
adrese memorijske lokacije na kojoj se nalazi prva instrukcija prekidne rutine na ije
izvravanje treba prei kao rezultat izvravanja instrukcije INT. Izvravanje instrukcije INT se
sastoji u stavljanju na stek tekue vrednosti programskog brojaa PC, programske statusne
rei PSW, a u nekim realizacijama procesora i svih programski dostupnih registara, i
upisivanju vrednosti iz polja adresa u programski broja PC. Ovde se podrazumeva da se
prilikom itanja instrukcije INT vri inkrementiranje vrednosti programskog brojaa PC i da
tekua vrednost programskog brojaa PC koja se stavlja na stek predstavlja adresu prve
sledee instrukcije posle instrukcije INT. U nekim realizacijama mehanizma prekida adrese
prekidnih rutina se smetaju u posebnu tabelu koja se naziva interapt vektor tabela. U tom
sluaju u polju adresa instrukcije INT se nalazi broj ulaza u interapt vektora tabelu iz koga
treba oitati adresu prekidne rutine i upisati u programski broja PC
Format instrukcije povratka iz povratka iz prekidne rutine je
RTI
pri emu je sa RTI simboliki oznaeno polje koda operacije. Instrukcija RTI mora da bude
zadnja instrukcija prekidne rutine. Izvravanje instrukcije RTI se sastoji u skidanju vrednosti
sa steka i upisivanju u programski dostupne registre, ukoliko se radi o realizacijama procesora
kod kojih se prilikom skoka na prekidnu rutinu ovi registri uvaju na steku, programsku
statusnu re i programski broja PC. Ovde se podrazumeva da je tokom izvravanja prekidne
rutine broj stavljanja vrednosti na stek jednaku broju skidanja vrednosti sa steka, ime se
obezbeuje da instrukcija RTI skida sa steka vrednosti onih registara koje je instrukcija INT
stavila na stek.
1.5.1.6 MEOVITE INSTRUKCIJE
U skupu instrukcija mogu da se nau i instrukcije kojima se omoguava zadavanje
razliitih reima rada raunara, prua podrka za testiranje programa itd. Ovde e biti date
same neke od njih, jer je za njihovo razumevanje potrebno poznavanje moguih reima rada
raunara. Kao primer se moe uzeti razred I u registru PSW koji vrednostima 1 i 0 odreuje
reime rada raunara sa reagovanjem i bez reagovanja na zahteve za prekid koji dolaze od
kontrolera periferija, respektivno. Instrukcijom INTE se zadaje reim rada u kome se reaguje
na prekide koji dolaze od kontrolera periferija, dok se instrukcijom INTD zadaje reim rada u
kome se ne reaguje na prekide koji dolaze od kontrolera periferija. Instrukcija NOP ne
proizvodi nikakvo dejstvo.
Format instrukcije zadavanja reima rada u kome se reaguje na zahteve za prekid je
INTE
pri emu je sa INTE simboliki oznaeno polje koda operacije. Izvravanje instrukcije INTE
se sastoji u upisivanju vrednosti 1 u razred I registra PSW.
64
65
1.5.2
NESTANDARDNE INSTRUKCIJE
String instrukcije
MOVC srclen, srcaddr, fill, dstlen, dstaddr
Instrukcija MOVC realizuje kopiranje karaktera izvorinog stringa u karaktere odredinog
stringa. poetna adresa izvorinog stringa je specificirana operandom srcaddr, duina
izvorinog stringa je je specificirana operandom srclen, poetna adresa odredinog stringa je
je specificirana operandom dstaddr, duina odredinog stringa je je specificirana operandom
dstlen i karakter FILL je specificiran operandom fill. Izvorini i odredini string mogu biti
razliitih duina. Kopiranje karaktera izvorinog stringa u karaktere odredinog stringa se
realizuje uvek na duini odredinog stringa. Karakter FILL se koristi samo u sluaju da je
izvorini string krai od odredinog stringa. Poetne adrese i duine izvorinog i odredinog
stringa mogu tako da budu zadate da doe do njihovog deliminog ili potpunog preklapanja.
Rezultat izvravanja instrukcije MOVC je, pored kopiranja sadraja jednog dela memorije
u drugi deo memorije, i postavljanje indikatora Z i C. Indikator Z ukazuje da li su duine
izvorinog i odredinog stringa jednake ili ne, dok indikator C, u sluaju da duine izvorinog
i odredinog stringa nisu jednake, ukazuje da li je odredini string dui od izvorinog ili ne.
Ako su izvorini i odredini string jednake duine (srclen = dstlen) karakteri izvorinog
stringa e u celosti biti kopirani u karaktere odredinog stringa (slika 1). Indikator Z e biti
postavljen na jedan (Z=1), a indikator C na nulu (C=0).
dstaddr
srclen
dstlen
srcaddr
66
odredinog stringa do duine odredinog stringa e biti popunjeni karakterom FILL (slika3).
Indikator Z e biti postavljen na nulu (Z=0), a indikator C na jedan (C=1).
Tokom izvravanja instrukcije MOVC, i to nakon kopiranja jednog karaktera izvorinog
stringa u element odredinog stringa, sadraji lokacija srcaddr i dstaddr se inkrementiraju, a
sadraji lokacija srclen i dstlen dekrementiraju. Tada sadraj lokacije srcaddr predstavlja
adresu sledeeg karaktera izvorinog koji treba da bude kopiran, sadraj lokacije dstaddr
adresu sledeeg karaktera odredinog stringa koji treba da bude popunjen, lokacije srclen broj
karaktera izvorinog stringa koji jo uvek nisu kopirani, a lokacije dstlen broj nepopunjenih
karaktera odredinog stringa.
dstaddr
srclen
dstlen
dstlen
srcaddr
dstaddr
dstlen
srclen
srclen
srcaddr
FILL
dstaddr
0
srclen
dstlen
tbladdr
255
dstaddr
dstlen
dstlen
srclen
tbladdr
255
68
srcaddr
dstaddr
dstlen
srclen
srclen
tbladdr
255
FILL
CMP
eql
69
src2len
src2addr
src1len
src1addr
src1len
src2len
src2addr
src1len
src1addr
CMP
FILL
eql
src2len
CMP
FILL
src2len
src2addr
src1len
src1addr
eql
srclen
srcaddr
CMP
eql
karakter
poreenja
noteql
71
eql
src1len
src2len
CMP
src2len
src1addr
src2addr
72
74