Professional Documents
Culture Documents
Mips
Mips
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
Le
Le
Le
Le
Cp
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
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