You are on page 1of 8

Zadatak 15

Neka je dat skup od etiri procesora P0, P1, P2 i P3, gde je Pi i-to adresna maina. P0 je nulto-
adresna stack maina, dok su P1, P2 i P3 konvencionalni raunari svaki sa po 16 registara opte-
namene R0:R15 koji se koriste za manipulaciju sa podacima i kao adresni registri. Svi procesori,
na nivou asemblerskog jezika, imaju opkdove za instrukcije Add, Sub, Mul i Div radi
implementacije operacija +, -, * i /, respektivno.
a) Koristei to je mogue manji broj instrukcija (krai program), kreirati programske sekvence
po kojima e svaka od maina izraunavati vrednost sledeeg aritmetikog izraza:
X : = (A/B + C * D)/(D * E - F + C/A) + G ,
koristei standardne mnemonike za ostale instrukcije kakve su na primer Load, Store, Push, Pop
i dr.
b) Izraunati ukupnu veliinu (obim) sva etiri programa u bitovima usvajajui da instrukcije na
nivou mainskog jezika imaju sledee formate:
(i) opkdovi (ne sadre adresnu informaciju) su 8-bitni;
(ii) memorijske adrese su 16-bitne;
(iii)adrese registara su 4-bitne. (na primer, dvo-adresna instrukcija Load R7,B koja se odnosi na
mainu P2 i oznaava R7:=M(B), je obima 8 + 4 + 16 = 28 bitova).
Odgovor

instrukcija duina instrukcija du instrukcija du instrukcija du


Push A 24 Load D 24 Mov R1,A 28 Div R0,A,B 44
Push B 24 Mul E 24 Div R1,B 28 Mul R1,C,D 44
Div 8 Sub F 24 Mov R2,C 28 Add R0,R0,R1 20
Push C 24 Store R1 12 Mov R2,D 28 Mul R1,D,E 44
Push D 24 Load C 24 Add R1,R2 16 Sub R1,R1,F 32
Mul 8 Div A 24 Mov R0,D 28 Div R2,C,A 44
Add 8 Add R1 12 Mul R0,E 28 Add R1,R1,R2 20
Push D 24 Store R1 12 Sub R0,F 28 Div R0,R0,R1 20
Push E 24 Load A 24 Mov R2,C 28 Add X,R0,G 44
Mul 8 Div B 24 Div R2,A 28 ukupno 312 bit.
Push F 24 Store R1 12 Add R0,R2 16 d) tro-adresna
Sub 8 Load C 24 Add R1,G 28
Push C 24 Mul C 24 Store X,R1 28
Push A 24 Add R1 12 ukupno 356 bitova
Div 8 Div R2 12 c) dvo-adresna
Add 8 Add G 24
Div 8 Store X 24
Push G 24 ukupno 336 bitova
Add 8 b) jedno adresna
Pop 24
ukupno 336 bitova
a) nulto adresna maina
Zadatak 18
Staza podataka jedne protone petostepene jedinice, kod koje nisu izvedene povratne veze, tj.
premoavanja, prikazana je na Slici 4.10.
IF S1 ID S2 EX S3 ME S4 WB

Le

Le

Le
Le

Cp

Slika 4.10 Petostepena protona jedinica


Pravila koja se odnose na princip rada strukture sa Slike 4.10 su:
(a) Operand koji se dobavlja iz memorije kod operacije Load dostupan je procesoru nakon faze
ME, a upisuje se u registar RF polja u fazi WB.
(b) Kod operacije Store operand je smeten u memoriji nakon faze ME.
(c) Instrukcija grananja kako je prikazano na Slici 4.11 uzrokuje zastoj od tri ciklusa (jedan
ciklus je ponovljeni IF ciklus a ostala dva su ciklus tipa zastoj, tj. iddle)
instrukcija grananja IF ID EX ME WB
1
naslednik grananja IF * * IF2 ID EX ME WB
naslednik grananja + 1 IF ID EX ME WB
naslednik grananja +2 IF IF EX ME WB
Slika 4.11 Efekat instrukcije grananja
Napomena: IF1 se odnosi na pribavljanje opkoda instrukcije koja u programu neposredno sledi
iza instrukcije grananja; IF2 se odnosi na pribavljanje opkda ciljne instrukcije grananja; Simbol
'*" se odnosi na zastoj.
d) Upis raspoloivog operanda u neki od registara RF polja vri se u toku prve polovine taktnog
impulsa, a itanje sadraja registra se obavlja u toku druge polovine. Kao posledica je mogue
preklapanje faze ID i WB, tj. ID moe da pribavi operand koji se memorie u toku faze WB.
Za sledei kdni segment :
ponovi: Lw r1,0(r2)
Addi r1,r1,#1
Sw r1,o(r2)
Addi r2,r2,#4
Sub r4,r3,r2
BNZ r4,ponovi
Ako je inicijalna vrednost r3 jednaka r2+396, nacrtati kako izgleda izvrenje instrukcije u
vremenu. Reenje treba da ima oblik kao onaj na Slici 4.11.
Ako pretpostavimo da su sva obraanja memoriji tipa ke pogodak, koliko je taktnih intervala
potrebno da se petlja izvri?
Odgovor
Vremenski dijagram protonog sistema prikazan je na Slici 4.12.
taktni intervali
instrukcija 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
Lw r1,0(r2) F D E M W
Addi r1,r1,#1 F * * D E M W
Sw r1,0r2 F * * D E M W
Addi r2,r2,#4 F D E M W
Sub r4,r3,r2 F * * D E M W
BNZ r4,ponovi F * * D E M W
Lw r1,0r2 F * * F D E M W
Slika 4.12 Vremenski dijagram rada maine za jednu potpunu iteraciju petlje i prve instrukcije
naredne iteracije.
Napomena: Radi preglednosti slike umesto notacije faza IF, ID, EX, MF, i WB koriena su
obeleavanja F, D, E, M i W , respektivno.
Zastoji se javljaju iz sledeih razloga:
taktni intervali razlog
3-4 Addi zaustavlja ID sve dok Addi ne upie operand u r1
6-7 Sw zaustavlja ID sve dok Addi ne upie operand u r1
10-11 Sub zaustavlja ID sve dok Addi ne upie operand u r2
13-14 BNZ zaustavlja ID sve dok Sub ne upie operand u r4
16-17 BNZ izraunava novu vrednost ciljne adrese PC-a tako da se Lw ne moe
pribaviti pre kraja ciklusa 17

Na osnovu dijagrama sa Slike 4.12, vidi se da druga iteracija poinje 17 taktnih intervala nakon
prve iteracije, a zadnjoj iteraciji je potrebno 18 taktnih intervala da bi zavrila. To znai da i-ta
iteracija (iteracije se broje od 0-98) poinje u taktnom intervalu 1+(i*17). S obzirom da se petlja
izvrava 99 puta, ukupni broj taktnih intervala, da se izvri cela sekvenca, iznosi
(98*17)+18=1684 taktna intervala.
Zadatak 26
Sledei kodni segment se izvrava na RISC procesoru koga ine pet protona stepena
prikazana na slici 1 (maj-01-4).
1. R1R2+R3
2. R1R1+R2
3. R2R3+R4
4. R5R6+R7
5. R5R5+R7
6. R6R1+R2
Pokazati kako izgleda konani kd i tok izvrenja programskog segmenta ako se konflikti
(hazardi) po podacima reavaju
a) ubacivanjem Nop operacija
b) preuredjenjem instrukcija
c) korienjem tehnike premoavanja a kompilator ubacuje operacije tipa Nop.
FE ID Sel Reg EX Sto Reg

Slika 1 (maj-01-4) Peto-stepeno organizovani RISC procesor


Odgovor
a) 1: R1R2+R3
2: R1R1+R2
3: R2R3+R4
4: R5R6+R7
5: R5R5+R7
6: R6R1+R2

b) 1: R1R2+R3
4: R5R6+R7
4': Nop
2: R1R1+R2
3: R2R3+R4
5: R5R5+R7
6: R6R1+R2
1 F D S E W
4 F D S E W
4' F D S E W Nop
2 F D S E W
3 F D S E W
5 F D S E W
6 F D S E W

c) 1: R1R2+R3
1': Nop
2: R1R1+R2
3: R2R3+R4 FE ID Sel Reg EX Sto Reg
4: R5R6+R7
4': Nop
5: R5R5+R7
6: R6R1+R2
1 F D S E W
1' F D S E W Nop
2 F D S E W
3 F D S E W
4 F D S E W
4' F D S E W Nop
5 F D S E W
6 F D S E W
Zadatak 9
Stepen inteligencije pet testiranih studenata je sledei 82, 76, 73, 94 i 70. Napisati programsku
sekvencu za odredjivanje najvieg stepena inteligencije.
Odgovor BX
TITLE TESTIRANJE
KOEFIC
PAGE 80,100 82
76
SMAG SEGMENT 73
DB 80 DUP (?) 94
SMAG ENDS 70
;-----------------------------------------------

SPOD SEGMENT
KOEFIC DB 82,76,73,94,70
NAJVISI DB ?
SPOD ENDS
;-----------------------------------------------
SPROG SEGMENT
PROG_1 PROC FAR
ASSUME CS:SPROG,DS:SPOD,SS:SMAG
MOV AX,SPOD
MOV DS,AX
MOV CX,5 ; postavi broja
MOV BX,OFFSET KOEFIC ;BX ukazuje na KOEFIC
SUB AL,AL ;AL=0 i uva NAJVISI koeficijent
PONOVI: CMP AL,[BX] ; uporedi naredni sa najviim
JA NAREDNI ; skok ako je AL najvii
MOV AL,[BX] ; AL uva novi najvii
NAREDNI: INC BX ; ukai na naredni koeficijent
LOOP PONOVI ; produi pretraivanje
MOV NAJVISI,AL ; sauvaj najvii koeficijent
MOV AH,4Ch ; povratak na DOS
INT 21h
PROG_1 ENDP
SPROG ENDS
END PROG_1
Zadatak 25
Napisati program na asemblerskom jeziku mikroprocesora iz familije 80x86 program koji uitava niz slova sa
tastature. Unoenje slova zavriti u trenutku kada se pritisne dirka koja nije slovo. Tada odtampati unesenu poruku,
ali u obrnutom redosledu i pri tome mala slova odtampati kao velika i obrnuto. Obezbediti da se moe bar 200
slova uneti u nizu, a zatim i odtampati.
Primer:
unosi se: MiLoS1
tampa se nakon toga: sOlIm
Napomena:
Za ispisivanje jednog karaktera, smetenog u registru DL, koristiti poziv 02h interapta 21h.
Za ispisivanje niza znakova, ija je poetna adresa smetena u registru DX, koristiti poziv 09h interapta 21h.
Za itanje dirke sa tastature sa efektom ehoa, koristiti poziv 1 interapta 21h (karakter e nakon toga biti smeten u
registru AL).
Za itanje dirke sa tastature bez efekta ehoa, koristiti poziv 07h interapta 21h (karakter e nakon toga biti smeten u
registru AL).
Odgovor
SMAG SEGMENT
DB 400 DUP (?)
SMAG ENDS
CODE SEGMENT code ;poetak programskog segmenta
ASSUME CS:CODE, SS:SMAG
MAIN PROC FAR ;poetak procedure MAIN
MOV AX,CS ;inicijalizacija segmenta podataka
MOV DS,AX
MOV AX,0h
PUSH AX
MOV AH,1h
PETLJA: INT 21H
CMP AL,61H
JB IZVAN
CMP AL,7AH
JA IZVAN1
AND AL,11011111B
JMP DALJE
IZVAN: CMP AL,41H
JB IZVAN1
CMP AL,5AH
JA IZVAN1
OR AL,00100000B
DALJE: PUSH AX
JMP PETLJA
IZVAN1: POP DX
CMP DX,0h
JE KRAJ
MOV AH,02H
INT 21H
JMP IZVAN1
KRAJ: MOV AX,4C00H
INT 21H
MAIN ENDP ;kraj procedure MAIN
CODE ENDS ;kraj programskog segmenta
END MAIN
Zadatak 26 Na lokacijama NBROJ i MBROJ memorisane su vrednosti N i M koje se nalaze u opsegu od 1 do 8 i
zadovoljavaju uslov M>N. Koristei modularno programiranje odrediti vrednost izraza: M! - N!
Program napisati na asemblerskom jeziku mikroprocesora 80x86.
Odgovor 1:
----- Modul za izraunavaje faktorijela -----
TITLE FAKTORIJEL
EXTRN BROJ : WORD
PUBLIC FACT
PR_SEG SEGMENT
FACT PROC FAR
ASSUME CS : PR_SEG
MOV AX,BROJ
MOV CX,AX
DEC CX
PON_MNO: MUL CX ; u DX:AX se smeta proizvod
DEC CX
JNZ PON_MNO
RET
FACT ENDP
PR_SEG ENDS
END
----- Glavni modul za izraunavaje M!-N! -----
TITLE GLAVNI PROGRAM
EXTRN FACT : FAR
PUBLIC BROJ
SMAG SEGMENT
DB 100 DUP (?)
SMAG ENDS
SPOD SEGMENT
BROJ DW 1 DUP (?)
NBROJ DW 1 DUP (?)
MBROJ DW 1 DUP (?)
POM DW 2 DUP (?)
REZULTAT DW 2 DUP (?)
SPOD ENDS
GL_PROG SEGMENT
GLAVNI PROC FAR
ASSUME CS:GL_PROG,DS:SPOD,SS:SMAG
MOV AX,SPOD
MOV DS,AX
MOV AX,NBROJ
MOV BROJ,AX
CALL FACT
MOV POM,AX
MOV POM+2,DX
MOV AX,MBROJ
MOV BROJ,AX
CALL FACT
SUB AX,POM
SUB DX,POM+2
MOV REZULTAT,AX
MOV REZULTAT+2,DX
MOV AH,4Ch
INT 21h
GLAVNI ENDP
GL_PROG ENDS
END GLAVNI

You might also like