You are on page 1of 3

1.meuispitizArhitektureraunala1 02.travnja2010.

Grupanapredavanjima:________
Prezimeiime(velikimslovima):___________________________________________JMBAG:__________________
Izjavljujem da tijekom izrade ove zadae neu od drugoga primiti niti drugome pruiti pomo, te da se neu koristiti nedoputenim
sredstvima. Ove su radnje teka povreda Kodeksa ponaanja te mogu uzrokovati i trajno iskljuenje s Fakulteta. Izjavljujem da mi
zdravstvenostanjedozvoljavapisanjeovezadae.Potpis:____________________________________________________________________.
Dozvoljenojekoristitiiskljuivoslubenialabahter(popisnaredabaFRISCa).Programetrebapisatiurednoikomentiratipojedinecjeline
programa.Svezadatkerjeavatinaovajpapir.Meuispittraje75minuta.
1.(2boda)Brojeve52
10
i52
10
upiiteuodgovarajuimoblicima(formatima)usljedeutablicu:
Oblik Broj52
10
Broj52
10

8bitniNBC 00110100 nijemogue


8bitniprikaz1'k 00110100 11001011
8bitniprikaz2'k 00110100 11001100
8bitnipakiraniBCD 01010010 nijemogue
8bitniprikazsbitomzapredznak 00110100 10110100

2.(2boda)SmjeroviFRISCovihprikljuakasu:READje_izlazni__,WRITEje_____izlazni__,WAITje____ulazni_,
ADR je _izlazni _, DATA je _ulazno/izlazni (dvosmjerni)_. itanje iz brze memorije traje _ 1_ takt(ova) CLOCKa, a
pisanjetraje_1_takt(ova).Pisanjeusporumemorijutraje__2ilivie;(1+TW,TW>1)___takt(ova).Akojememorija
spora,tojavljaFRISCuprekosabirnikelinijespojenenanjegovprikljuak____WAIT________,kojegaFRISCispituje
____napadajuibridsignalaCLOCK____________________(ukojemtrenutku).

3.(2boda)FRISCizvodisljedeiprogram:
`ORG 0
MOVE 100, SP
PUSH 1234
CALL POTP
ADD SP, 8, SP
PUSH 0ABCD
HALT
POTP PUSH 10
RET
Upiite u tablicu desno stanje svih memorijskih lokacija od
F0 do 107 i strelicom oznaite poloaj SP nakon izvoenja
gornjegprograma.
Poetnosusveprikazanememorijskelokacijeu0.
PretpostavitedaPUSHradisasrc2.
Adresa Sadraj Adresa Sadraj
F0 00 FC 34
F1 00 FD 12
F2 00 FE 00
F3 00 FF 00
>F4 CD 100 00
F5 AB 101 00
F6 00 102 00
F7 00 103 00
F8 0C 104 00
F9 00 105 00
FA 00 106 00
FB 00 107 00

4. (3,7 bodova) Napiite potprogram POTP koji mnoi dva broja uzastopnim zbrajanjem. Glavni program alje dva
parametrapotprogramutakodaprviparametaraljeprekostoga,adrugiparametarputemR0.Parametrisu32bitni
brojevi u formatu NBC. Potprogram vraa rezultat u registru R2. Potprogram uva stanja registara, a parametre sa
stogauklanjaglavniprogram.
Napiite glavni program koji poziva potprogram POTP pri emu kao prvi parametar alje podatak zapisan na
memorijskoj lokaciji 20000
16
, a kao drugi parametar podatak na memorijskoj lokaciji 20004
16
. Rezultat izvoenja
potprogramatrebaspremitinalokaciju56781234
16
.

; potprogram
`ORG 100 ; ORG <> 0 ili poredak
POTP PUSH R1 ; spremi kontekst
PUSH R0
MOVE 0, R2 ; postavi rezultat
CMP R0, 0 ; pogledaj da nije 0 u R0
JR_EQ GOTOV
LOAD R1, (SP+0C) ; uitaj prvi
PETLJA ADD R1, R2, R2 ; zbroji
SUB R0, 1, R0 ; oduzmi broj ponavljanja
JP_NE PETLJA ; ponavljaj ako nije
GOTOV POP R0
POP R1 ; vrati kontekst
RET ; povratak
; glavni
`ORG 0 ; poredak ili ORG 0
GLAVNI MOVE 10000, SP ; stog na vrhu memorije
LOAD R0, (20000) ; uitaj podatak s lokacije
PUSH R0 ; stavi na stog
LOAD R0, (20004) ; uitaj podatak s lokacije
CALL POTP ; pozovi potprogram
ADD SP, 4, SP ; oisti stog
LOAD R1, (MEM) ; uitaj mem. lokaciju
STORE R2, (R1) ; spremi rezultat
HALT
MEM DW 56781234 ; mem. adresa rezultata
`ORG 20000
DW 0ABCD1234, 0CDEF3412 ; neki podaci
5.(5,3bodova)Umemorijisenalaziblokkojisesastojiodparova16bitnihpodatakauprikazusbitomzapredznak.
Memorijskiblokpoinjenaadresi2000
16
,azakljuenjeparompodatakaF0F0
16
iF0F0
16
.
Napiiteprogramkojisvakipar16bitnihbrojevaublokumemorijezamjenjujenovim32bitnimpodatkomnasljedei
nain. Za svaki par 16bitnih brojeva u bloku treba izraunati njihov zbroj. Zbroj treba biti u 32bitnom prikazu 2'k i
trebagazapisatiubloknamjestopoetnogparabrojeva.
Prilikom pretvorbe podataka, program takoer treba prebrajati koliko je negativnih 16bitnih podataka bilo u
poetnomblokuitonakrajuprogramatrebazapisatinamemorijskulokacijuBROJAC.
Primjer(zbrajanjezajedanparpodataka):Umemorijisenaadresi2000
16
nalazipodatak8005
16
,anaadresi2002
16

0002
16
, to su brojevi 5 i +2. Ovaj par treba pretvoriti u broj 3
10
= 5
10
+ 2
10
= FFFFFFFD
16
, koji treba zapisati na
adresu2000
16
,abrojatrebapoveatiza1.

`ORG 0
GLAVNI MOVE 2000, R0 ; poetak bloka
MOVE 0, R1 ; broja negativnih
PETLJA LOADH R2, (R0) ; uitaj prvi 16-bitni u R2
LOADH R3, (R0+2) ; uitaj drugi 16-bitni u R3
CMP R2, 0F0F0 ; provjeri da li F0F0
JP_NE DALJE ; ako ne skoi na oduzmi
CMP R3, 0F0F0 ; provjeri da li F0F0
JP_EQ KRAJ ; skoi na kraj
DALJE AND R2, 8000, R5 ; pogledaj 16. bit
JP_Z DRUGI ; ako pozitivan skok
ADD R1, 1, R1 ; poveaj broja
AND R2, 7FFF, R2 ; briem 16. bit
XOR R2, -1, R2 ; komplement
ADD R2, 1, R2 ; dodam 1 za 2k'
DRUGI AND R3, 8000, R5 ; pogledaj 16. bit
JP_Z ZBROJI ; ako pozitivan skok
ADD R1, 1, R1 ; poveaj broja
AND R3, 7FFF, R3 ; briem 16. bit
XOR R3, -1, R3 ; komplement
ADD R3, 1, R3 ; dodam 1 za 2k'
ZBROJI ADD R3, R2, R2 ; zbroji
STORE R2, (R0) ; spremanje
ADD R0, 4, R0 ; pomak za 4
JP PETLJA ; nastavak petlje
KRAJ STORE R1, (BROJAC) ; spremanje brojaa
HALT
BROJAC DW 0

You might also like