Ordenagailuen egitura- laborategia eta praktikak - UPV/EHU · Hamming harreran: egiaztatu...

77
Liburu honek UPV/EHUko Euskararen Arloko Errektoreordetzaren dirulaguntza jaso du Ordenagailuen egitura- laborategia eta praktikak Nekane Azkona Estefanía EUSKARAREN ARLOKO ERREKTOREORDETZAREN SARE ARGITALPENA ISBN/ISSN: 978-84-9082-156-5

Transcript of Ordenagailuen egitura- laborategia eta praktikak - UPV/EHU · Hamming harreran: egiaztatu...

Liburu honek UPV/EHUko Euskararen Arloko Errektoreordetzaren dirulaguntza jaso du

Ordenagailuen egitura-laborategia eta praktikak

Nekane Azkona Estefanía

EUSKARAREN ARLOKO ERREKTOREORDETZAREN

SARE ARGITALPENA

ISBN/ISSN: 978-84-9082-156-5

2

GELAKO PRAKTIKAK

3

GP 0

0. gaia. Errepasoa

BANAKAKO ARIKETAK (EMAITZEKIN):

1. Eragiketak sistema bitarrean:

Batuketa

a) 11 + 11 = b) 100 + 10 =

c) 111 + 11 = d) 110 + 100 =

Biderketa

e) 11 · 1 = f) 11 · 11 =

g) 111 · 101 =

h) 1011 · 1001 =

Kenketa

i) 11 – 01 = j) 11 – 10 =

k) 111 – 100 =

l) 110 – 101 =

m) 111 – 11 =

Zatiketa

n) 110 : 11 = o) 110 : 10 =

2. Hamartarretik bitarrera bihurketa:

a) 15 =

b) 59 =

c) 0,3125 =

d) 31,15 =

3. Bitarretik hamaseitarrera bihurketa:

a) 1100101001010111 =

b) 01101001101 =

4. Hamaseitarretik bitarrera bihurketa:

4

a) 10A416 =

b) CF8E16 =

c) 974216 =

5. Hamartarretik hamaseitarrera bihurketa:

a) 65010 =

b) 402510 =

6. Zein da 6 zenbakiaren pisua honako zenbaki hamartar hauetan?

a) 1386 =

b) 54,692 =

c) 671,920 =

7. Adierazi honako zenbaki hauek hamarreko berrekizun moduan:

a) 10 =

b) 100 =

c) 10000 =

d) 1000000 =

8. Zein da 4 digitu hamartarrekin adieraz daitekeen zenbakirik handiena?

9. Pasa hamartarrera bitarrean emandako zenbaki hauek:

a) 11 =

b) 100 =

c) 111 =

d) 1000 =

e) 11101 =

f) 11,011 =

5

10. Zein izango da bit kopuru hauekin adieraz daitekeen balio hamartar handiena?

a) 2 bit =

b) 7 bit =

c) 10 bit =

11. Zenbat bit behar dira honako zenbaki hamartar hauek adierazteko?

a) 17 =

b) 81 =

c) 35 =

d) 32 =

12. Pasa hamartarrera hainbat oinarritan emandako honako zenbaki hauek:

a) E516 =

b) B2F816 =

c) 23748 =

13. Bihurtu hamartarretik bitarrera, gutxienez koma ondoren hiru digitu dituztela eta errore erlatiboa < % 0,1 izanik:

a) 2,08 =

b) 73,625 =

14. Honako zenbaki hauetako bakoitzak koma higikorreko zenbaki bat adierazten du (754 estandarrean); zein zenbaki hamartarri dagokio?

a) 010000100001101100000000000000002 =

b) 001110110001011010111011100110002 =

c) 470BBBDD16 =

d) 7FD0438116 =

6

15. Zenbat bit behar ditugu honako datu hauei Hamming aplikatzeko? Zein posiziotako bitek eramango dituzte datu-bitak eta zeinek kontrol-bitak?

a) D3 D2 D1 D0 = 1001

b) D6 D5 D4 D3 D2 D1 D0 = 0110111

16. Hamming igorpenean: gaineratu aurreko ariketako datuei beharrezko kontrol-bitak.

17. Hamming harreran: egiaztatu igorpenean Hamming aplikatu zitzaien jasotako datuek errorerik jasan duten, eta baiezkoa bada, zuzendu. Zein ate logiko erabiliko zenuke erroredun bit bat zuzentzeko? Zer gertatzen da 2 bitek errorea jasan badute? Nola antzeman daiteke egoera hori?

a) Jasotako datua: 1111010

b) Jasotako datua: 11101000110

c) Jasotako datua: 1111111

d) Jasotako datua: 111101011

18. Inplementatu honako funtzio kanoniko hau, irudikoa bezalako 8tik 1erako

multiplexore batekin. f(A,B,C)=Σ (m1, m3, m4, m7)

7

19. Inplementatu funtzio bera, irudikoa bezalako 3 sarrerako deskodetzaile bat eta behar hainbat bi sarrerako ate logiko erabiliz.

20. Sinplifikatu Karnaugh bidez, maxterm eta minterm moduan, aurreko ariketetako funtzioa, eta marraztu zirkuituak 2 eta 3 sarrerako ate logikoak erabiliz.

EMAITZAK

1) Eragiketak sistema bitarrean:

Batuketa

a) 11 + 11 = 110 b) 100 + 10 = 110

c) 111 + 11 = 1010 d) 110 + 100 = 1010

Biderketa

e) 11 · 1 = 11 f) 11 · 11 = 1001

g) 111 · 101 = 100011

h) 1011 · 1001 = 1100011

Kenketa

i) 11 – 01 = 10 j) 11 – 10 = 01

k) 111 – 100 = 011

l) 110 – 101 = 001

m) 111 – 11 = 100

Zatiketa

n) 110 : 11 = 10 o) 110 : 10 = 11

8

2) Hamartarretik bitarrera bihurketa:

1510= 11112 5910 = 1110112 0,312510 = 0,01012 31,12510 = 11111,0012

3) Bitarretik hamaseitarrera bihurketa:

11001010010101112 = CA5716 011010011012 = 34D16

4) Hamaseitarretik bitarrera bihurketa:

10A416 → 10000101001002

CF8E16 → 11001111100011102 974216 → 10010111010000102

5) Hamartarretik hamaseitarrera bihurketa:

65010 = 28A16 402510 = FB916

6) Zein da 6 zenbakiaren pisua honako zenbaki hamartar hauetan?

1386 (100 � 0 pisudun bita)

54,692 (10-1� -1 pisudun bita)

671,920 (102� 2 pisudun bita)

7) Adierazi honako zenbaki hauek hamarreko berrekizun moduan:

10 = 101 100 = 102 10000 = 104 1000000 = 106

8) Zein da 4 digitu hamartarrekin adieraz daitekeen zenbakirik handiena?

xxxx → 104-1 → 999

9) Pasa hamartarrera bitarrean emandako zenbaki hauek:

11 = 3 100 = 4 111 = 7 1000 = 8 11101 =29 11,011 = 3,375

10) Zein izango da bit kopuru hauekin adieraz daitekeen balio hamartar handiena?

2 bit → 3 7 bit → 127 10 bit → 1023

9

11) Zenbat bit behar dira honako zenbaki hamartar hauek adierazteko?

1710 → 4 bits 8110 → 6 bits 3510 → 5 bits 3210 → 5 bits

12) Pasa hamartarrera hainbat oinarritan emandako honako zenbaki hauek:

E516 = 22910 B2F816 = 4581610 23748 = 127610

13) a) 10,000101 Erel=0,0901%<0,1% b) 1001001,101 E=0 14) a) 38,7510 b) ~0,0023 c) 35768 d) NaN 15) a) m=4; r=3; _ _ D3 _ D2 D1 D0 b) m=7; r=4; _ _ D6_ D5 D4 D3 _ D2 D1 D0 16) a) datua: 1001 � 0011001; b) datua: 0110111 � 11001101111

17) a) errorea b2n, datua: 1010 b) errorea b6n, datua: 1110110

c) errorerik ez, datua: 1111 d) errorea b3n, datua: 00101

Errorea duen bitaren eta errorea adierazten duen seinalearen OR esklusiboarekin zuzendu daiteke.

Metodo honen bitartez, bit bakarreko erroreak besterik ezin dira zuzendu; hortaz, errorea bit batek baino gehiagok badute, zuzenketa horrek beste akats batzuk ekar ditzake. Paritate bit gehigarri batek errore anizkoitzak antzematea ahalbidetuko du. 18) 19) 20) f = (A+C) · (/B+C) · (/A+B+/C) f = /A·C + B·C + A·/B·/C

10

GP 0

0. gaia. Errepasoa

BANAKAKO TEST-GALDERAK ETA ARIKETAK (EMAITZEKIN): 1) Zenbat da 2·101+8·100 ?

a) 10 b) 280 c) 2,8 d) 28

2) Zein da 1101 zenbakiari dagokion balio hamartarra?

a) 13 b) 49 c) 11 d) 3

3) Zein da 11011101 zenbakiari dagokion balio hamartarra?

a) 121 b) 221 c) 441 d) 256

4) Zein balio bitar dagokio 17 zenbaki hamartarrari?

a) 10010 b) 11000 c) 10001 d) 01001

5) Zein balio bitar dagokio 175 zenbaki hamartarrari?

a) 11001111 b) 10101110 c) 10101111 d)11101111

6) Zein da batuketa bitar honen emaitza: 11010 + 01111? a) 101001 b) 101010 c) 110101 d)1010000 7) Zein da batuketa bitar honen emaitza: 110 – 010?

a) 001 b) 010 c) 101 d) 100

8) Zein da 8 biteko 00111001 zenbaki bitarrari dagokion baterako osagarria?

a) 11000111 b) 11000110 c) 11000110 d) 10101010

9) Zein da 8 biteko 01001000 zenbaki bitarrari dagokion birako osagarria?

a) 10110111 b) 10110001 c) 11001000 d) 10111000

10) Zein da +122 zenbaki hamartarraren adierazpena, 8 biteko birako osagarrian?

a) 01111010 b) 11111010 c) 01000101 d) 10000101

11) Zein da -34 zenbaki hamartarraren adierazpena, 10 biteko birako osagarrian?

11

a) 01011110 b) 10100010 c) 11011110 d) 01011101

12) Birako osagarrian, zein balio hamartar adierazten du 10010011 zenbakiak?

a) -19 b) +109 c) +91 d) -109

13) 101100111001010100001 zenbaki bitarraren adierazpen zortzitarra:

a) 54712308 b) 54712418 c) 26345218 d) 231625018

14) Zein zenbaki hamaseitar adierazten du balio bitar honek: 100011010100011011112

a) AD46716 b) 8C46F16 c) 8D46F16 d) AE46F16

15) Ze balio bitar dagokio hamaseitar honi: F7A916

a) 1111011110101001 b) 1110111110101001

c) 1111111010110001 d) 1111011010101001

16) 47310 zenbakiaren BDC adierazpena:

a) 11101010 b) 110001110011

c) 010001110011 d) 010011110011

17) Batu honako BCD zenbaki hauek:

a) 1000 + 0110 b) 0111 + 0101

c) 1001 + 1000 d) 1001 + 0111

e) 00100101 + 00100111 f) 01010001 + 01011000

g) 10011000 + 10010111 h) 010101100001 + 011100001000

18) Idatzi bitarrean Gray kodean emandako honako zenbaki hauek:

a) 1010 b) 00010 c) 11000010001

19) Idatzi BCDn honako zenbaki hamartar hauek:

12

a) 10 b) 13 c) 18 d) 21

e) 25 f)36 g) 44 h) 57

i) 69 j) 98 k) 125 l) 156

20) Bihurtu honako zenbaki hauek BCDtik hamartarrera: a) 1000000 b) 001000110111 c) 001101000110

EMAITZAK

1.d) 2.a) 3. b) 4. c) 5. c) 6. a) 7. d) 8. b) 9.d) 10. a) 11. c) 12. d) 13. b) 14. c) 15. a) 16. c) 17. a) 00010100 b) 00010010 c) 00010111 d) 00010110 18. a) 1100 b) 00011 c) 10000011110 19. a) 00010000 b) 00010011 c) 00011000 d) 00100001

e) 00100101 f) 00110110 g) 01000100 h) 01010111

i) 01101001 j) 10011000 k) 000100100101 l) 000101010110

20. a) 80 b) 237 c) 346

13

GP 1

1. talde-lana

Ikasturte horretarako proposatutako lana (ikasgelan edo egela bitartez banatuko da). GP 2

2. talde-lana

Ikasturte horretarako proposatutako lana (ikasgelan edo egela bitartez banatuko da).

Proposatutako talde-lanen arabera, taldeak desberdinak izan daitezke 1. eta 2. talde-lanetan.

14

GP 3

PCaren osagaiak

Aurkitu eta identifika itzazu PCaren honako osagai hauek: KANPOKO KONEKTOREAK

a) PS/2 b) ataka paraleloa c) serieko ataka d) VGA ataka

e) joko-ataka f) DVI-I konektoreak g) USB h) elikadura i) Jack (TRS) j) sarea k) PLAKA NAGUSIA

15

HEDAPEN-TXARTELAK l) Txartel grafikoa m) Sare-txartela KONEKTOREAK ETA BARNE-ERRETENAK (SLOT) n) IDE (CD, HD,…) ñ) PCI (hedapen-txartelak) o) RAM memoriarentzat konektoreak p) mikroprozesadorearen zokaloa GAILUAK q) Disko gogorra (ROM memoria) r) CD/DVD-irakurle/grabagailua s) RAM memoria t) Mikroprozesadorea u) Sistemaren erlojuaren pila v) BIOS

16

GP 4

Datu-bidea: Unitate Aritmetiko Logikoa

Diseina ezazu lau biteko A eta B zenbakiak ( A[A3, A2, A1, A0] eta B[B3, B2, B1, B0]) sarrera moduan izanik honako eragiketa hauek gauzatzen dituen UAL bat: Aritmetikoak: A; Aren gehikuntza (A+1); batuketa (A+B); kenketa (A-B) Logikoak: B; AND (A·B); OR (A+B); XOR (A B) Marraztu eragiketa aritmetikoetarako taula eta zirkuitua, eta eragiketa logikoetarako taula eta zirkuitua etapa baterako. Zenbat hautespen-seinale behar izan dituzu? Kopuru hori murriztu al daiteke?

17

GP 5

0. gaia. Paritate bita. Errore detektatzaile/zuzentzaileak. Hamming

1. Zenbat paritate bit (r) behar dira Hamming aplikatzeko, jatorriko datuen bit

kopurua (m) taulakoak badira?

m 4 5 6 7 8 9 10 11 12

r

2. Suposatuta beheko bit multzoak datuak + Hamming aplikatuta kalkulatutako

paritate bitek osatuta daudela, zein izango litzateke kasu bakoitzean jatorriko

datua (errorerik egon den konprobatu gabe)?

a. 11011

b. 1110101

c. 010001111

3. Aplikatu Hamming beheko hiru datuei:

a. 01

b. 1101

c. 00111

4. Beheko bit multzoak Hamming aplikatu zaien datuak dira. Jatorriko datua

atera, horretarako errorerik egon den konprobatu, baiezkoan errorea

zuzenduz.

a. 11111000011

b. 0101110

5. Zer gertatzen da bi errore gertatzen badira?

6. Nola kalkulatu, zein ate logiko edo zirkuitu integraturekin, paritate eta

kontrol bitak? Eta nola zuzendu errorea duen bit bat?

18

GP 6

1. gaia. Von Neumann, datu-bidea eta kontrol-unitatea

1-Von Neumann eta datu-bidea 1- Bete zenbatutako hutsuneak.

2- Izendatu von Neumann arkitekturaren bi ezaugarri nagusiak.

3- Zer da kontrol-hitza? Zeinek erabiltzen du eta zertarako?

4- Zeinek sortzen du kontrol-hitza? Nondik, zein informaziotatik?

19

2-Datu-bidea: kontrol-hitza

1. Behean dugu gelan ikusitako kontrol-hitzaren eskema. Zenbat bit dauzka eta zer adierazten du 7 eremu horietako bakoitzak?

DA AA BA MB FS MD RW

DA [ ]:

AA [ ] :

BA [ ] :

MB [ ]:

FS [ ] :

MD [ ] :

RW [ ]:

2. Zein kontrol-hitz emango dute 1, 2 eta 3 mikroeragiketek? Zein mikroeragiketa daude 4, 5 eta 6 kontrol-hitzen jatorrian?

Mikroeragiketa DA AA BA MB FS MD RW

1 (R4) sl (R6)

2 (R1) (R0)+2

3 B datu_irteera (R3)

4 001 010 011 0 0101 0 1

5 111 111 XXX X 0001 0 1

6 100 XXX XXX X XXXX 1 1

3-Datu-bidea: Unitate Aritmetiko (Logikoa)

Identifikatu irudiko unitate aritmetikoak egiten dituen funtzioak, eta osatu taula:

20

GP 7

1. gaia. Von Neumann, datu-bidea eta kontrol-unitatea

4- Kontrol-unitatea 1. Aginduaren adierazpenetik eta atxikitako (a), (b) eta (c) irudiez baliatuz,

atera aginduaren kode bitarra, eta deskodetzaileak emango duen kontrol-hitza.

Erregistroak

R2R5 ERAG. KODEA DA AA BA

DA AA BA MB FS MD RW MW PL JB BC

R2R1+R5

Berehalako eragigaia

R25

R2R1+5

Jauzi eta adarkatzea

if R2=0 jauzi +20

if R2<0 jauzi -20

21

(a) Agindu-taula

(b) Konputagailu sinple baten hiru agindu-formatu.

22

(c) Kontrol finkodun konputagailu baten deskodetzailea

2. FS=0010 konbinaketak F=A+B eragiketa zehazten badu, zein aginduk sortu du honako kontrol-hitz hau?

DA AA BA MB FS MD RW MW PL JB BC

0 1 1 0 1 0 0 1 1 1 0 0 1 0 0 1 0 0 0 0

23

GP 8

1. gaia. Von Neumann, datu-bidea eta kontrol-unitatea

Datu-bidea kanalizazioan (pipe-line)

1. Konputagailu baten elementuek irudian adierazitako atzerapen-denborak

dituzte.

a. Zenbat denbora beharko du bost agindu exekutatzeko?

b. Zein izango da erlojuaren gehienezko maiztasuna?

c. Bi erregistro daude eskuragarri exekuzioa kanalizazioan antolatzeko:

non jarriko zenituzke (irudian) hobekuntzarik onena lortzeko?

d. Erregistro berri horietako bakoitzak 1 ns gaineratzen badu, zenbat

denbora behar du orain agindu baten exekuzioak? Eta bost

agindurenak?

2. Datu-bide bat eraztunean lotutako bost elementuk osatzen dute (A-E); honako

hauek dira horien gehienezko atzerapen-denborak: A (4ns), B (2ns), C (3ns), D

(4ns) eta E (1ns)

a) Zein da lan-maiztasun altuena?

b) Hiru erregistro ditugu eskuragarri kanalizazioa antolatzeko (bakoitzak +1ns).

Banatu bost elementuak hoberen deritzozun etapetan. Zein lan-maiztasun lor

dezakegu orain? Zenbat denbora behar du agindu baten exekuzioak? Eta bost

agindurenak?

c) Errepikatu b) atala lau etapako kanalizazio batentzat.

24

GP 9

PCaren eguneratzea – Ziklo bakarra, kontrol finkoa

Irudiko multiplexoreak W, X eta Y izendatuz, lortu PL, JB, BC; Z eta N sarreren

funtzioan PCan kargatuko den balioa. Hasi taula partzialekin.

PL BC JB N Z PCan kargatzen dena

Ez dago jauzirik

Zero-n baldintzatutako jauzia

Zero-n baldintzatutako jauzia

Negatibo-n baldintzatutako jauzia

Negatibo-n baldintzatutako jauzia

Baldintzarik gabeko jauzia

4:1

MUX

W

S1 S0

0

Batutzailea

Programaren zenbatzailea (PC)

Z

N

0 0

PL BC JB

0 1

1 (n bit) Offset

Jauzi helb

JAUZI KONTROLA

0 1 2 3

PCaren hurrengo balioa

2:1 MUX X

2:1 MUX Y

0 1

n

n

n n

n n

n n

0 0

0 1

1 0

1 1

X mux out W mux out

= MX (*) PL BC

MW1 MW0

MY=PL·JB Y mux irteera

0 =

1=

00

01

10

11

25

GP 10

1. gaia. Von Neumann, datu-bidea eta kontrol-unitatea

Sekuentziazioa eta kontrola Erantzun gelan ikusitako kontrol-unitateen irudiak konparatuz (ziklo bakarreko

kontrol finkoa eta mikroprogramatutako ziklo anitzeko kontrola).

1- Zertarako behar dira datu-bidean ikusten diren hautespen-seinaleak?

2- Nondik datoz irudietan agertzen diren hautespen-seinale horiek? Zeinek sortzen

ditu eta zeren arabera?

3- Zein da kontrol-unitatearen betebeharra?

4- Zein dira bi kontrol mota horien arteko oinarrizko desberdintasunak (izenak berak

esaten digu)? Azaldu bakoitzaren oinarrizko funtzionamendua.

5- Zein da kasu bakoitzean kontrol-hitzaren bit kopurua?

6- Bi irudiak konparatuz, zer esango zenuke honako hauen gainean:

a) Memoria (datuak eta aginduak)

b) Erregistro-blokea

c) IR erregistroa

7- Bi kontrolen arteko desberdintasunak kontrol-hitzean islatzen dira. Zein

hautespen-seinale berri azaltzen dira mikroprogramatutako kontrolean? Azaldu

kontrol-hitzen arteko desberdintasunen zergatia.

a) Datu-bidean �

b) Sekuentziazioan eta kontrolean �

8- Zer egiten da ‘0’z bete kutxatilan? Noiz erabiltzen da? Zergatik da beharrezkoa?

9- Nola egiten da zeinu-luzapena? Noiz erabiltzen da? Zergatik ez da goikoan bezala

‘0’z betetzen, besterik gabe?

10- Zein dira kontrol finkoan agertzen diren memoriak? Zein da beren hitz-luzera? Eta

mikroprogramatutako kontrolean agertzen den datu/agindu memoriarena?

11- Zer dago «kontrol-memoria»ren barruan? Zein da bere funtzioa (zeinek egiten du

betebehar hori kontrol finkoan)? Zein da bere tamaina? Zergatik?

12- Datu-bidearen eta kontrolaren diseinua amaitu ondoren, eragiketa bat gaineratu

nahi badugu, zein dira eman beharreko pausoak kasu batean eta bestean?

26

Ziklo bakarreko kontrol finkoa

Logic and computer design fundamentals (M.M. Mano & C.R. Kime) liburutik

eraldatutako irudia

27

Ziklo anitzeko mikroprogramatutako kontrola

Logic and computer design fundamentals (M.M. Mano & C.R. Kime) liburutik

eraldatutako irudia

28

GP 11

2. gaia. Agindu-jokoa eta helbideratzea

1- 32 biteko aginduak: eragiketa-kodea (6 bit), R1 (6 bit) , R2 (6 bit) eta berehalako eragigaia (14 bit)

a) Zein da zehaztu daitekeen eragiketa kopuru maximoa? b) Zenbat erregistro helbidera daitezke? c) Eragigaiak zeinurik gabeko zenbaki bitarrak badira, zein balioren

arteko eragigaiak izan ditzakegu? d) Eragigaiaren 1. bitak (13 bit guztira) zeinua adierazten badu, zein

balioren arteko eragigaiak adieraz daitezke Z&M eta 2rako osagarrian?

2- 32 biteko memoria, 32 erregistrodun erregistro-blokea, agindu multzoa 110 eragiketa desberdinek osatzen dute (agindu formatu bakarra).

a) Zein da eragiketa-kodearen eremuak behar duen bit kopurua? b) Zenbat bit geratzen dira eragigaiarentzat? c) Zeinurik gabeko memoria helbide gisa erabiliz gero, zenbat memoria-

posizio helbidera daitezke? d) Berehalako eragigai moduan erabiliz gero (2rako osagarria

adierazpenean), zein da erabil daitekeen balio aljebraikorik handiena? Eta txikiena?

3- 32 biteko aginduak dauzkagu, baina eragiketa-kodearen luzera ez da beti berdina: eragiketa-kodea 0z hasten bada, luzera 4 bit; 10z hasiz gero, 6 bit eta 11ez hasiz gero 8. Zenbat eragiketa-kode desberdin izan ditzakegu?

4- Memorian 2 hitzeko agindu bat dugu, memoriako datu batekin eragiketa bat

gauzatu eta emaitza toki berean utzi behar dela zehazten duena. Zeharkako helbideratzea erabiliz gero, zenbat memoria-atzipen behar dira?

5- Memoriako 207, 208 posizioetan biltegiratuta dagoen aginduak (ezkerreko irudia) baldintzarik gabeko jauzi bat adierazten du 195 posiziora. Aginduaren modu-eremuak helbideratzea erlatiboa dela zehazten badu, helbide-eremuarentzat zein izango da:

a) balio hamartarra? b) balio bitarra (16 bit eta 2rako osagarria)?

6- Gauza bera, baina orain agindua 143, 144 posizioetan dago (eskuineko irudia)

eta 1000 posiziora egin behar da jauzia.

29

7- Zein izango da honako helbideratze modu hauetarako helbide efektiboa?

8- Izanik A=3516 eta B=B916, gauzatu A eta Bren AND, OR eta XOR:

Honako 16 biteko balio hau emanda, zein eragiketa logiko gauzatu behar

dira eta zein baliorekin… (eman balioak hamaseitarrean)

a)… pisurik txikieneko 8 bitak ‘1’ean jartzeko? b)... posizio ez-pareetako bitak ukatzeko? c)…posizio ez-pareetako bitak ‘0’an jartzeko?

1 0 1 0 1 0 0 1 0 1 1 1 1 1 0 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

100010

14310

14410

Memoria

Erag. Kod. Modua

Helbidea

19510

20710

20810

Memoria

Erag. Kod. Modua

Helbidea

EK modua 211

Helbideratzea Zuzena Berehalakoa Erlatiboa Zeharkako R Indexatua (R1)

R1=189

Helbide efek.

0000

8000

8001

FFFF

30

GP 12

2. gaia. Agindu-jokoa eta helbideratzea

Fluxu-diagrama 1. Demagun agindu-joko bat, biderketa eragiketa gaineratzen ez duena, baina bai batuketa. Egin batuketan oinarrituta biderketa egiten duen algoritmoaren fluxu-diagrama. Zenbakiak R1 eta R0 (>0) erregistroetan daude (suposa dezakegu jada bertan daudela, edo 1 eta 2 ataketatik sartzen direla), eta emaitza lehen biderkagaia duen erregistroan geratu behar da.

MUL: R1R1xR0 2. Marraztu (erregistro batean dagoen edo ataka bidez sartzen den) zenbaki baten (>0) faktoriala kalkulatzen duen algoritmoaren fluxu-diagrama. 3. Pentsatu kasu bakoitzean zein erregistro erabiliko dituzun, bi algoritmoak konbinatuz 8085ean faktorialaren kalkulua inplementatzeko (laborategian erabiliko den etxerako eginbeharra).

31

GP 13

4. gaia. Memoriak

1. Memoria zirkuitu integratu (Z.I.) bat 2Kx8 moduan zehaztuta badator:

a. Zenbat hitz biltegiratzen ditu?

b. Zein da hitzaren tamaina?

c. Zenbat bit biltegiratzen ditu guztira?

2. 12M biteko memoria batean atzipena 8 biteko hitzetara (byte bat) egiten

bada, zenbat helbide-lerro behar dira?

3. Guztira 4.194.304 bit dituen memoria-txip batean, atzipena 16 biteko

hitzetara (2 byte) egiten bada, zenbat helbide-lerro behar dira?

4. Memoria-zirkuitu integratu batek 32Kx16-ko edukiera badu:

a. Zenbat helbide-lerro ditu?

b. Zenbat datu-lerro ditu?

c. Zein izango da bere edukiera byte-etan? Eta bitetan?

5. Zenbat helbide-lerro beharko ditu aurreko ariketakoaren edukiera bera duen

memoria batek, atzipena bytera egiten bada?

6. Zenbat terminal behar ditu irudikoa bezalako memoria Z.I. batek, S/I-ko lerro

komunak baditu?

7. Honako 1)-5) kasuetarako:

1. 2 MB-eko memoria nahi dugu, 512 KB-eko zirkuitu integratuekin (Z.I.)

2. 2 MB-ekoa 512 K x 4-ko Z.I.ekin

3. 2 MB-ekoa 256 KB-eko Z. I.ekin

4. 2Mx16-koa 512 KB-eko Z. I.ekin

5. 2Mx16-koa 512 K x 4-ko Z. I.ekin

Erantzun beheko a) –f) galderak taulan, eta gauzatu elkarketak:

a. Zenbat bit behar dira gauzatu nahi den memoria helbideratzeko?

(Guztirako helbide-busaren zabalera)

32

b. Zenbat bit behar dira memoria-txip bat (Z.I.) helbideratzeko?

c. Guztirako datu-busaren zabalera.

d. Txip bakoitzaren datu-busaren zabalera.

e. Zenbat bit behar dira guztira (memoria tamaina x hitz zabalera hori

lortzeko)?

f. Zenbat bit behar dira txip horiek helbideratzeko? Memoria finalaren

helbide-busaren bit guztietatik, zein erabiliko dituzu beharrezko txipa(k)

hautatzeko?

g. Gauzatu elkarketak.

EMAITZAK:

a b c d e f

1

2

3

4

5

8. RAM memoria zirkuitu integratu batek 16Kx2-ko edukiera, datu-sarrera eta

irteera bananduak, maila baxuko zirkuitu-hautespen seinale bat (/CS), R/W

sarrera bat eta elikadura 2 pin ditu. Azaldu nola konbinatu zirkuitu horietako

batzuk 16Kx8-ko memoria bat lortzeko.

9. 32Kx8-ko ROM bat osatu nahi da 8Kx8-ko PROM zirkuitu integratuak erabiliz.

Azaldu zenbat PROM ZI behar diren, eta nola konbinatu nahi den edukiera

lortzeko.

10. Sistema baten CMak 5 ns-ko atzipen-denbora dauka, eta MNarena 50 ns da.

Eskaeren % 30 idazketak dira. CMaren asmatze-tasa % 80koa bada eta

berehalako eguneratze-politika («write through») erabiltzen bada, zehaztu:

a. batez besteko atzipen-denbora (irakurketa zikloak bakarrik kontuan

izanik)

b. batez besteko atzipen-denbora (idazketa ere kontuan izanik)

11. Cache-memoria (teoria): hitz bat K aldiz erreferentziatzen da denbora-epe

labur batean; lehenengoan ez dago cachean, eta memoria nagusitik ekarri

behar da. Cache-memoriaren atzipen-denbora C eta memoria nagusiarena M

izanik, definitu asmatze-tasa eta batez besteko atzipen-denbora.

12. Diseinatu honako zehaztapen hauek betetzen dituen orrikatutako alegiazko

memoria-sistema:

a. Alegiazko eremu helbideragarria = 64K

b. Helbide fisikoen eremua = 8K

33

c. Orrien tamaina = 512 hitz

d. Orri-taularen erregistroen guztirako luzera = 24 bit

13. Irudikoaren moduko txipak erabilita, 256 kB-eko memoria osatu nahi dugu.

Zenbat gailu behar ditugu? Gauzatu loturak.

14. Irudikoaren moduko txipak erabilita, 128 KB-eko memoria nagusia osatu nahi

dugu. Zenbat memoria-modulu behar ditugu? Gauzatu loturak.

15. Irudikoaren moduko txipak erabilita, 1 GB-eko memoria nagusia osatu nahi

dugu. Zenbat memoria-modulu behar ditugu? Gauzatu loturak.

16. 1 MB-eko memoria osatzeko, irudikoa bezalako memoria-txipak dauzkagu

eskuragarri. Irudikatu inplementazioa, aukerak arrazoituz (txip kopurua,

loturak…)

34

GP 14

6. gaia. Busak

1. Zein dira honako bus hauen sinkronizazio moten seinale bereizgarriak? a. Bus sinkronoa b. Bus asinkronoa c. Bus erdi-sinkronoa

2. Honako kronograma honetatik ondorioztatu: a. Protokoloaren ezaugarriak. b. Eremu helbideragarria. c. Zein aldaketa proposatuko zenukete 64 KB helbideratu ahal izateko?

3. Aurreko ariketan maiztasuna 8 MHz-ekoa dela jakinik, zein da gutxieneko

irakurketa-denbora?

4. Bus baten protokoloaren diseinuan eztabaida bat sortu da: batzuek 8 MHz-eko erlojua jarri nahi dute, kasu horretan edozein gailuk 3 erloju-ziklotan egin dezake irakurketa edo idazketa bat; besteek, aldiz, 9 MHz-eko erlojua jarri nahi dute, errendimendu altuagoa lortzeko, kasu horretan idazketak 3 ziklo, baina irakurketak 4 behar ditu. Kasu jakin honetan irakurketa-idazketak erdibana banatzen direla dakigula, arrazoitu zein den aukerarik hoberena.

5. Ondorioztatu protokoloaren ezaugarriak irudiko kronogramatik.

35

6. Memoria apurtu da, eta eskuragarri dugun bakarra motelagoa da. Zein aldaketa egin ditzakegu gure protokoloan, memoria horrekin ordezkatu ahal izateko?

7. 50 MHz-eko erloju-maiztasunean lan egiten duen bus sinkrono batek 4 ziklo

behar ditu 16 biteko hitz baten irakurketa egiteko, eta 3 ziklo idazketa bat egiteko.

a. Busaren banda-zabalera [bit/s] irakurketarako. Berdin idazketarako. b. Zenbat denbora beharko du 1 MB irakurtzeko? Eta idazteko?

36

LABORATEGIA

37

Kudeaketaren eta Informazio Sistemen Informatikaren Ingeniaritzako Gradua

Ordenagailuen Egitura

Laborategi aurrekoa (etxerako ariketak): ENUNTZIATUAK

ERREPASOA 8085ean oinarri hamaseitarra erabiltzen da.

a) Zein balio har ditzake digitu hamaseitar batek?

b) Zenbat digitu bitar dagozkio digitu hamaseitar bati?

c) Zenbat digitu hamaseitar dituzte erregistroek? Beraz, zein balio adieraz daitezke hamaseitarrean, bitarrean eta hamartarrean?

d) Zenbat digitu behar dira memoriako posizio bat zehazteko? Orduan, zenbat erregistro behar dira memoriaren erakusle moduan erabili ahal izateko?

TRANSFERENTZIA-AGINDUAK

1. Goiko irudiak adierazten digun 8085aren egoeran honako agindu hauek exekutatuko balira, zein balio geratuko lirateke mikroprozesadorearen erregistroetan? Osatu taula, agindu bakoitza egoera horretatik abiatuta (ez hiru aginduak jarraian).

38

A B C D E H L

a) mov b,d

b) mov a,m

c) mov m,e

d) Hiruretako batek ez du erregistro horietatik bat ere aldatzen, memoriako eduki bat

baizik. Zein aginduk? Zein da aldatzen duen memoriako posizioa? Zein aldaketa eragiten du?

e) Zer da F erregistroa (zeren berri ematen du)? Goiko eragiketa horiekin aldatuko al

da bere balioa? Zergatik?

f) Zer da PC erregistroa? Goiko eragiketa horiekin aldatuko al da? Zergatik eta nola?

2. Memoriako 9003 posizioan dagoen datua 9008ra eraman nahi da. Gauzatu mugimendu

hori bi agindurekin.

3. 1. ariketako irudiko egoeratik abiatuz, esan zer gertatuko litzatekeen honako ariketa hauek exekutatzean (zer aldatzen den eta nola):

a) sta 9001

b) lda 9001

c) shld 9001 d) lhld 9001

4. 1. ariketan, zein erregistro-bikote erabili da memoriaren erakusle gisa? Nola hasieratu daiteke? Hau da, 900Ah posizioaren erakusle moduan erabili nahi badugu, zein eragiketa exekutatu beharko dugu? Oharra: memorian datu array bat izatekotan, arrayaren lehen elementuaren helbidearekin hasieratu dezakegu erakuslea, eta gero, erakuslea gehituz, arraya zeharkatu.

5. Zein desberdintasun dago honako agindu hauen artean? (Azaldu bakoitzak zer egiten duen)

a) lda addr (A) [addr]

b) ldax rp (A) [(rp)]

c) sta addr [addr] (A)

d) stax rp [(rp)] (A)

6. Zein da xchg aginduaren eragina? Zertarako izango zaigu erabilgarri?

39

AGINDU ARITMETIKOAK Eragiketa aritmetiko gehienetan metagailuak parte hartzen du. Aginduan erregistro bat edo

memoria posizio bat zehazten da modu esplizituan, eta metagailuan egongo da eragiketa

gauzatzeko behar den bigarren elementua. Eragiketaren emaitza metagailuan idatziko da, eta

agindua exekutatu aurretik metagailuan zegoen datua galduko da. Beraz:

a) Metagailuan dagoen datua berriro erabili nahiko bada, eragiketa exekutatu aurretik

beste nonbait (erregistro batean edo memoriako posizio batean) gorde beharko dugu

(transferentzia-aginduak erabiliz).

b) Lortutako emaitza metagailuan baino ez dago; hurrengo agindua exekutatzean

nahigabean galdu ez dezagun, beste nonbait kopiatu beharko da.

Transferentzia-aginduetan ez bezala, hauetan flag (indikadore) gehienak aktibatzen dira.

1. Honako aginduek gauzatzen dutena azaldu eta jatorriko egoera irudikoa izanik, esan zein

emaitza geratuko litzatekeen metagailuan (lehenengoa adibide moduan eginda dago).

Oharra: aginduak ez dira bata bestearen atzean exekutatzen

a) ADD b b) ADD c

40

c) ADD a d) ADD m e) ADI 08 f) ADC b g) ADC c h) ADC m i) ACI 08 j) SUB b k) SUB c l) SUB a m) SUB m n) SUI 08 o) SBB b p)SBB c q) SBB m r) SBI 08 2. 9000h posiziotik aurrera 12 elementuko array bat dago. Demagun begizta bat egiten dugula, zenbatzaile baten laguntzaz arrayaren elementuak banan-banan gehitzeko. Idatzi honako pauso hauek gauzatzeko beharko diren aginduak:

a) Hasieratu erakusle moduan erabiliko den erregistro-bikotea.

a) Begiztaren barruan, gehitu arrayaren i. elementua (egokitzen dena).

b) Erakuslea eguneratu (orain arrayaren hurrengo elementua erakuts dezan).

41

AGINDU LOGIKOAK

1) Zein agindu logikok eraldatzen dituzte flag direlakoak? Zein flag-engan dute eragina?

2) a) Idatzi AND, OR, XOR eta NOT oinarrizko eragiketa logikoen egia-taula.

b) Nola gauzatu NOT eragiketa XOR ate batekin?

3) 8085ean agindu multzo logikoa AND, XOR, OR eta CMPk osatzen dute. CMPk konparaketa bat egiten du emandako erregistro (CMP r), memoria-eduki (CMP M) edo zehaztutako balio baten (CMP byte) eta metagailuaren balioaren artean. Galtzen al da metagailuan zegoen balioa? Non gordetzen da emaitza? Nola izango dugu erabilgarri eragiketa horren emaitza?

4) MASKARAK. 8 digituko zenbaki bitar ezezagun bat daukagu (XXXXXXXX2). Agindu logikoak erabilita:

a) Nola jarri bit guztiak ‘1’ (111111112)? b) Nola jarri bit guztiak ‘0’an (000000002)?

c) Nola jarri 4 bit esanguratsuenak ‘1’ean, azken 4 biten balioa aldatu gabe? d) Nola jarri 4 bit esanguratsuenak ‘0’an, azken 4 biten balioa aldatu gabe? e) Nola jarri bit guztiak ‘0’an, MSB delakoa izan ezik (hau dagoen bezala mantendu)?

Zein dira eragiketa horren ahalezko emaitzak?

5) Demagun aurreko ariketako zenbaki bitar ezezaguna 100111012 dela. Jarri hamaseitarrean zenbaki hori eta aurreko ariketako a)-e) ataletako maskarak.

6) Memoriako 9002 posizioan dagoen datuarekin, honako eragiketa hauek gauzatu nahi dira:

a) Bere bit guztiak ezeztatu eta emaitza 9003 posizioan utzi. b) lsb aldatu gabe, beste guztiak ‘1’ean jarri eta emaitza 9004 posizioan utzi. c) MSB aldatu gabe, beste guztiak ‘0’an jarri eta emaitza 9005 posizioan utzi.

7) Memoriako 9100 posizioan dagoen datua 9101ekoa baino handiagoa ala txikiagoa den jakin nahi da. Zer egin dezakegu (eragiketa logikoak erabilita) hori jakiteko? Gauza bera (9100eko datua) b erregistroan dagoen datuarekin eta 1210 zenbakiarekin.

42

43

BIRAKETA-AGINDUAK

1) Irudikatu RLC, RRC, RAL eta RAR aginduek erregistroaren bitengan duten eragina.

2) Zein erregistroren edukia biratzen da?

3) Erregistroaren edukia 40h da. Zein da bi RLC edo bi RAL eragiketa jarraian egitearen arteko desberdintasuna? Gauza bera edukia 01h bada eta RRC edo RAR (behin) exekutatzen bada.

4) Erregistro horren edukia 100010112 bada, zein da bere balio hamartarra? Zein izango da RLC eta RRC eragiketen emaitza (bai oinarri bitarrean, bai hamartarrean ere). Eta edukia 000100002 den kasuan? (Balio hamartarra eta biraketen emaitzak). Orduan, biraketa ordez desplazamendua egingo bagenu eta hustutako posizioak betetzeko ‘0’ bat sartuko bagenu, zer lortzen dugu zenbaki bitar bat posizio bat ezkerrera higitzen dugunean? Eta eskuinera higitzean?

5) Zein da zenbaki baten baterako osagarria (definizioa eta praktikan nola egiten dugun)? Eta birako osagarria?

6) CMA eta CMC aginduen arteko ezberdintasunak (azaldu bakoitzak egiten duena).

7 6 5 4 3 2 1 0 CY

MSB

L S B

44

ADARKATZE-AGINDUAK 1- Bete ezazu honako taula honetan egoera bitek (flag direlakoek) balio bata edo bestea

hartzen dutenean adierazten dutena.

Egoera-bita Balioa Esanahia: aurreko eragiketan…

S 0

S 1

Z 0

Z 1

P 0

P 1

CY 0

CY 1

2- Nolakoa izan da aurreko eragiketaren emaitza, F erregistroaren balioa honako hau bada?

a) F=04h b) F=11h c) F=C4h 3- Aurreko aginduaren emaitza negatiboa bada, jauzi egin NEGATIVO etiketara. 4- Emaitza negatiboa bada, jauzi egin NEGera; bestela EZ_NEGera.

S Z - AC - P - CY

F 2

45

ARIKETA OSOAK 1- Azaldu zer egiten duen honako programa honek. mvi a,00

buklea:

lda 9000

cpi 00

jz fin

jm negatiboa

jmp buklea

negatiboa:

;hemen jartzen ez ditugun agindu batzuk egongo dira

amaiera:

2- Zer egiten du honako programa honek? mvi a,00

buklea:

lda 9000

mov b,a

lda 9001

sub b

jz amaiera

jmp ezberdinak

ezberdinak:

;hemen jartzen ez ditugun agindu batzuk egongo dira

amaiera:

3- 9000 posizoan array baten lehen

elementua dago. Array hori 10 elementuz osatuta dago, eta badakigu guztiak balio positiboak direla. Idatzi arrayaren elementuak zeharkatzen dituen programa bat, balio bakoitza dekrementatuz. Arrayaren amaierara iristean berriro hasiko da, beste unitate batean gehidekrementatzeko. Horrela jarraituko du balio horietako bat zerora iritsi arte.

4- Azaldu zer egiten duten honako programa hauek, agindu bakoitzak eta programa osoak.

lhld 9100 mvi b, 00

mvi c, 10 mvi d, 08 buklea: mov a,d cmp m jm hurrengoa inr b hurrengoa: inx hl dcr c jz amaiera jmp buklea amaiera:

46

Kudeaketaren eta Informazio Sistemen Informatikaren Ingeniaritzako Gradua

Ordenagailuen Egitura

Laborategi aurrekoa (etxerako ariketak): EMAITZAK

ERREPASOA 8085ean oinarri hamaseitarra erabiltzen da.

a) [Emaitza]: 16 balio desberdin har ditzake: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E eta F. b) [Emaitza]: Lau zifra bitar. c) [Emaitza]: 2 digitu hamaseitar; beraz, adieraz daitekeen baliorik handiena FF16=111111112=25510 d) [Emaitza]: Lau digitu hamaseitar (16 bitar). Erregistro bakoitzak bi hamaseitar (zortzi bitar) baino ez ditu, beraz, bi erregistro behar dira.

TRANSFERENTZIA-AGINDUAK

1.

A B C D E H L

a) mov b,d 05 45 0A 45 54 90 05

b) mov a,m 05 90 0A 45 54 90 05

c) mov m,e 05 90 0A 45 54 90 05

d) [Emaitza]: c) aginduak. HL erregistro-bikoteak erakutsitako memoria-helbidea

aldatzen du; kasu honetan, 9005 memoria helbidean E erregistroaren edukia idatziko du, 54 balioa, hain zuzen ere.

e) [Emaitza]: Egoera biten (S, Z, AC, P, CY) informazioa duen erregistroa da. Aurreko

eragiketa guztiak transferentziakoak izanik (eta horiek flag-engan eraginik ez dutenez), ez da aldaketarik izango beren balioan.

f) [Emaitza]: PC erregistroa programaren zenbatzailea da (exekutatu behar den

hurrengo aginduaren helbidea du). Aurreko eragiketek zuzenean eraldatzen ez badute ere, edozein eragiketaren exekuzioak erregistro horren gehikuntza automatiko bat dakar, oraingo eragiketaren ondoren exekutatu behar denaren helbidea erakuts dezan.

2. [Emaitza]: lda 9003 (A)←[9003]

sta 9008 [9008]←(A)

3. a) sta 9001 [Emaitza]: [9001](A) memoriako 9001h helbidean gordeko du (metagailuaren balioa) 05h

b) lda 9001

[Emaitza]: (A)[9001] metagailuan gordeko du memoriako (9001h helbidean dagoen) 01h.

47

c) shld 9001

[Emaitza]: [9001](L) eta [9002](H), 9001 memoriako helbidean (L erregistroaren edukia) 05h gordeko du, eta hurrengo posizioan, hau da, 9002h helbidean, (Hren edukia) 90h.

d) lhld 9001

[Emaitza]: (L)[9001] eta (H)[9002], L erregistroan (9001h helbidean dagoen datua) 01h balioa gordeko du, eta H erregistroan (9002h posizioko datua) 02h balioa.

4.

[Emaitza]: HL erregistro-bikotea erabili da. lxi h, 900A: 5.

a) lda addr (A) [addr] [Emaitza]: metagailuan addr memoriako helbidearen edukia idazten da.

b) ldax rp (A) [(rp)] [Emaitza]: rp erregistro-bikoteak zehazten duen memoria-helbidean dagoen datua idazten da metagailuan.

c) sta addr [addr] (A) [Emaitza]: Emandako addr helbidean metagailuaren balioa gordetzen da.

d) stax rp [(rp)] (A) [Emaitza]: rp erregistro-bikoteak zehaztutako memoria-helbidean gordetzen da metagailuaren balioa. Beraz, a eta c kasuetan zuzenean zehazten da memoria-helbidea; b eta d kasuetan, berriz, erregistro-bikote bat erabiltzen da memoriaren erakusle gisa. 6. [Emaitza]: (H)�(D) eta (L)�(E) HL eta DE erregistro-bikoteen edukiak trukatzen ditu. Begizta batean bi array batera maneiatu nahi badira, HL bikotea denez mov eragiketekin erabil daitekeen bakarra, erakusle bien edukiak trukatuz goaz.

(H)����(D) y (L)����(E)

AGINDU ARITMETIKOAK 1. a) ADD b [Emaitza]: (A) (A)+(B); 12h 06h+0Ch; metagailuan 06h zegoen, B erregistroan 0Ch (1210); beraz, metagailuan gordeko den emaitza 12h da, (610+1210=1810) =12h. b) ADD c [Emaitza]: (A) (A)+(C); 08h 06h+02h; metagailuan 06h zegoen, eta C erregistroan 02h; beraz, metagailuan gordeko den emaitza 08h da, (610+210=810) =08h. c) ADD a [Emaitza]: (A) (A)+(A); 0Ch 06h+06h; metagailuan 06h zegoenez, bertan honako emaitza hau gordeko da:(610+610=1210) =0Ch. d) ADD m [Emaitza]: (A) (A)+[(HL)]; 18h 06h+12h; metagailuan 06h balioa zegoen, eta HL erregistro-bikoteak erakutsitako memoria-posizioan (hau da, 9005h helbidean) 12h (1810) zegoen; beraz, (610+1810=2410) =18h da metagailuan gordeko den emaitza.

48

e) ADI 08 [Emaitza]: (A) (A)+08h; 0Eh 06h+08h; aginduaren mnemonikoan «i» horrek esaten digu aginduaren eragigaia berehalako datua dela, alegia, 08h zuzenean datua dela (batugaia, kasu honetan). Metagailuan 06h zegoenez, bertan gordeko den emaitza (610+810=1410)=0Eh izango da. f) ADC b [Emaitza]: (A) (A)+(B)+(CY); 12h 06h+0Ch+0b. Aginduaren mnemonikoan agertzen den «C» horrek esaten digu bururakoak ere parte hartzen duela eragiketan (batuketa, kasu honetan). Baina irudian CY=’0’ dela ikusten dugunez (00h=010), eragiketa horrek eta a) atalekoak emaitza bera emango dute: (610+1210+010=1810) =12h. g) ADC c [Emaitza]: (A) (A)+(C)+(CY); 08h 06h+02h+0b. Metagailuan 06h balioa zegoen, C erregistroan 02h, eta bururakoaren bitak «0» balioa duenez (ez dago bururakorik gehitzeko), metagailuan (610+210+010=810) 08h balioa geratuko da. h) ADC m [Emaitza]: (A) (A)+[(HL)]+(CY); 18h 06h+12h+0b. Metagailuan 06h zegoen, HL erregistro-bikoteak zehaztutako memoria-helbidean (9005h) 12h, eta bururako bitak «0» balio du; beraz, metagailuan geratuko den emaitza (610+1810+010=2410) 18h izango da. i) ACI 08 [Emaitza]: (A) (A)+08h+(CY); 0Eh 06h+08h+0b; metagailuan 06h balioa zegoen, bururako bita «0» da eta berehalako eragigaia 08h; beraz, metagailuan geratzen den emaitza (610+810+010=1410) 0Eh da. j) SUB b [Emaitza]: (A) (A)-(B); FAh 06h-0Ch; b erregistroan dagoen balioa (0Ch=1210) metagailuan dagoena (06h=610) baino handiagoa denez, kenketaren emaitza balio negatibo bat izango da: (610-1210=-610) FAh. k) SUB c (A) (A)-(C); 04h 06h-02h; metagailuan 06h eta C erregistroan 02h balioak genituenez, metagailuan gordeko den emaitza (610-210=410) 04h da. l) SUB a [Emaitza]: (A) (A)-(A); 00h 06h-06h; metagailuari bere balio bera kendu badiogu, metagailuan geratuko den emaitza (610-610=010) 00h izango da. m) SUB m [Emaitza]: (A) (A)-[(HL)]; F4h 06h-12h. Metagailuan 06h balioa zuen eta HL erregistro-bikoteak markatzen duen memoria-helbideak (9005h) 12h (1810); hortaz, metagailuan geratzen den emaitza (610-1810=-1210) F4h izango da. n) SUI 08 [Emaitza]: (A) (A)-08h; FEh 06h-08h. Metagailuan zegoen balioari (06h) berehalako eragigaia (08h) kentzen badiogu, metagailuan geratzen den emaitza (610-810=-210) =FEh izango da. o) SBB b [Emaitza]: (A) (A)-(B)-(CY); FAh 06h-0Ch-0b. Metagailuan 06h balioa zegoen, B erregistroan 0Ch (1210), eta bururako bitak «0» balio du; beraz, metagailuan geratzen den balioa (j ataleko ariketan bezala) (610-1210-010=-610) =FAh da. p) SBB c [Emaitza]: (A) (A)-(C)-(CY); 04h 06h-02h-0b. Bururakoa zeroan dagoenez, metagailuan zegoen 06h balioari C erregistroko 02h balioa kentzen zaio, eta emaitza metagailuan geratzen da (610-210-010=410) 04h.

49

q) SBB m [Emaitza]: (A) (A)-[(HL)]-(CY); F4h 06h-12h-0b. Metagailuan 06h zegoen eta HL erregistroak zehaztutako memoria-helbidean (9005h) 12h (1810) balioa zegoen. Bururako bita «0» izanik, metagailuan gordeko den emaitza (610-1810-010=-1210) F4h izango da. r) SBI 08 [Emaitza]: (A) (A)-08h-(CY); FEh 06h-08h-0b; metagailuan 06h zegoen; berehalako eragigaia 08h da, eta bururakoa zehazten duen bita «0»; hortaz, (610-810-010=-210) FEh emaitza gordeko da metagailuan. 2. a) [Emaitza]: HL erregistro-bikotea erabiliko dugu erakusle moduan; beraz, arrayaren lehen elementuak duen memoriako helbidearekin hasieratuko dugu:

lxi h, 9000 (HL) 9000h b) [Emaitza]: HL erakuslea eguneratuta badago, i. elementuaren helbidea izango du; hortaz, honako agindu hau erabil daiteke:

inr m [(HL)] [(HL)]+1 c) [Emaitza]: Arrayaren elementuak ondoz ondoko memoria-helbideetan daudenez, nahikoa izango da HL erregistro-bikoteak duen balioa unitate batean gehitzearekin, horrek arrayaren hurrengo elementua erakuts dezan:

inx h (HL) (HL)+1

50

AGINDU LOGIKOAK

1) [Emaitza]: Agindu logiko guztiek flag guztiengan dute eragina. 2) a) [Emaitza]:

AND OR XOR NOT

X Y F X Y F X Y F X Y

0 0 0 0 0 0 0 0 0 0 1

0 1 0 0 1 1 0 1 1 1 0

1 0 0 1 0 1 1 0 1

1 1 1 1 1 1 1 1 0

b) [Emaitza]: XORen egia-taulan, ikus daiteke x=1 denean, F beti Yren kontrakoa dela. Beraz, nahikoa da XORen bi sarreren bat =1 dela egiaztatzearekin. 3) [Emaitza]: Metagailuko balioa ez da galtzen. Emaitza berez inon gordetzen ez bada ere, 1. galderan esan dugun bezala egoera bit guztietan eragina izango duenez, horiek esango digute datu bat bestea baino handiagoa, txikiagoa edo berdina den. Horrela, erabilgarri izango zaigu konparaketaren emaitzan baldintzatutako jauziak egiteko.

4)

a) [Emaitza]: A+1=1, beraz, egin beharreko eragiketa: ORI FFh (FF16)=(111111112). b) [Emaitza]: A·0=0, beraz, egin beharreko eragiketa: ANI 00h (0016)=(000000002). c) [Emaitza]: A+1=1 eta A+0=A, beraz, eragiketa: ORI F0h (F016)=(111100002). d) [Emaitza]: A·0=0 y A·1=A, beraz, eragiketa ANI 0Fh (0F16)=(000011112) e) [Emaitza]: A·0=0 y A·1=A, beraz, eragiketa ANI 80h (8016)=(100000002)

MSB=0 bada emaitza: 00h, berriz, MSB=1 bada emaitza: 80h.

5) [Emaitza]: a) Maskara FFh, Emaitza FFh. b) Maskara 00h, Emaitza 00h. c) Maskara F0h, Emaitza FDh. d) Maskara 0Fh, Emaitza 0Dh. e) Maskara 80h, Emaitza 80h.

6) [Emaitza]: a) LDA 9002h ANI 00h STA 9003h

b) LDA 9002h ORI FEh STA 9004h

c) LDA 9002h

ANI 80h STA 9005h

7) [Emaitza]:

a) lda 9100 (A) [9100] lxi h, 9101 (HL) 9101 cmp m (A)-[(HL)] b) lda 9100 (A) [9100] cmp b (A)-(B) c) lda 9100 (A) [9100]

cpi 0C (A) – 0Ch (0Ch=1210)

51

BIRAKETA-AGINDUAK

1) [Emaitza]:

2) [Emaitza]: Metagailuan, A erregistroan.

3) [Emaitza]: A=010000002=4016=6410

RLC A=100000002=8016=12810 CY=0 RLC A=000000012=0116=0110 CY=1

A=010000002=4016=6410 exekutatu aurretik CY=0 suposatuz:

RAL A=100000002=8016=12810 CY=0 RAL A=000000002=0016=010 CY=1

52

A=000000012=0116=110

RRC A=100000002=8016=12810 CY=1 RAR A=110000002=C016=19210 CY=0

4) [Emaitza]:

A=100010112=8B16=13910 RLC A=000101112=1716=2310 CY=1 RRC A=110001012=C516=19710CY=1

A=000100002=1016=1610

RLC A=001000002=2016=3210 CY=0 RRC A=000010002=0816=810 CY=0

Ezkerrerantz higitzean, bit bakoitzaren pisua handitu egiten da; zenbakia 2rekin biderkatzen da beraz, baina MSB (bn-1) galtzen denez, balio hori kendu behar zaio: shl (N)= 2·N - bn-1·2

n

Eskuinerantz higitzean, bit bakoitzaren pisua txikitu egiten da; ondorioz, zenbakia 2rekin zatitzen da, baina lsb (b0) galtzen denez, balio hori kendu behar zaio: shr (N)= N/2 - b0·2-1

5) [Emaitza]: A zenbakiaren baterako osagarria: 2

n-1-|A| ; n: A zenbakiaren bit kopurua.

Praktikan: A erregistroaren bit guztien ezezkoa egin. A zenbakiaren birako osagarria: 2

n-|A| ; n: A zenbakiaren bit kopurua.

Praktikan: A zenbakiaren baterako osagarriari bat gehitu.

6) [Emaitza]:

CMA aginduak A erregistroan dauden biten ezezkoa egiten du. CMC aginduak CY flag-aren ezezkoa egiten du.

53

ADARKATZE-AGINDUAK 1-

Egoera bita Balioa Esanahia: aurreko eragiketan…

S 0 emaitza positiboa da

S 1 emaitza negatiboa da

Z 0 emaitza zeroren desberdina da

Z 1 emaitza zero da

P 0 emaitza parea da (1 zenbaki parea)

P 1 emaitza bakoitia da (1 zenbaki bakoitia)

CY 0 emaitzan ez da bururakorik egon

CY 1 emaitzan bururakoa egon da

2-

a) F=04h [Emaitza]: F=04h=000001002 ; S=0; Z=0; AC=0; P=1; CY=0;

Emaitza bakoitia, positiboa, zeroren desberdina, eta ez da bururakorik egon.

b) F=11h [Emaitza]: F=11h=000100012 ; S=0; Z=0; AC=1; P=0; CY=1;

Emaitza bakoitia, positiboa eta zeroren desberdina da. Gainera, barne-bururako bat (3. bitetik 4.era) (AC=’1’) eta bururako bat (CY=’1’) eman dira.

c) F=C4h [Emaitza]: F=C4h=110001002 ; S=1; Z=1; AC=0; P=1; CY=0; Ez da posible emaitza zero (Z=’1’), negatiboa (S=’1’) eta bakoitia (P=’1’) izatea.

3- [Emaitza]: jm NEGATIBOA (…) NEGATIBOA: 4- [Emaitza]: jm NEG

jmp EZ_NEG (…) NEG: (…) EZ_NEG:

54

ARIKETA OSOAK 1- mvi a,00 Metagailua zerora hasieratzan da,

buklea:

lda 9000 9000h-ko edukia irakurtzen da [a(9000)]

cpi 00 eta zerorekin konparatzen da

jz amaiera berdinak badira, programa amaitzen da

jm negatiboa <0 bada, “negatiboa” ra jauzi egiten du

jmp buklea bestela (>0), buklea exekutatzen du berriz

negatiboa:

;hemen jartzen ez ditugun agindu batzuk egongo dira

amaiera:

Programak 9000h posizioko datua konprobatzen du, hori positiboa den bitartean; negatiboa bada, (zehazten ez den) kodigo zati bat exekutatzen da, eta zero bada programa amaitzen da. 2- mvi a,00 Metagailua zerora hasieratzan da,

buklea:

lda 9000 9000h-ko datua irakurtzen da metagailura,

mov b,a b erregistroan gordetzen da,

lda 9001 9001h-ko datua irakurtzen da metagailura,

sub b konparatzen dira (aa-b) eta

jz amaiera berdinak badira programa amaitzen da,

jmp ezberdinak bestela “ezberdinak” era jauzi egiten du

ezberdinak:

;hemen jartzen ez ditugun agindu batzuk egongo dira

amaiera:

Programak 9000h eta 9001h posizioetako balioak konparatzen ditu, eta kodigo bat exekutatzen du (hemen zehaztugabea), horiek desberdinak izatekotan.

3- [Emaitza]:

hasieratu: lxi hl,9000 mvi b,0a buklea: dcr m jz amaiera inx hl dcr b jnz buklea jmp hasieratu amaiera:

4- [Emaitza]: lhld 9100 ; 9100 helbideko edukia L erregistrora

; eta 9101ekoa Hra

mvi b, 00 ; b erregistroa zerora hasieratu

55

mvi c, 10 ; c erregistroa 10 baliora hasieratu

mvi d, 08 ; d erregistroa 08 baliora

buklea:

mov a,d ; (a)<-- (d)=08h

cmp m ; (a)-[(HL)] konparatzen ditu:

; metatzailearen edukia (8) eta (1. elementuaren

; helbide 9100 posizioko edukia duen) arrayaren

; elementua, X datua

jm hurrengoa ; emaitza negatiboa bada (8 > X)

; "hurrengoa"-ra jauzi egin b gehitu

inr b ;gabe, bestela (8 < X) b gehitu

hurrengoa:

inx hl ; erakuslea gehitu

dcr c ; c erregistroa dekrementatu

jz amaiera ; c-ren edukia zero bada amaierara jauzi egin

jmp buklea ; bestela begiztan beste buelta bat

amaiera:

9100h eta 9101h helbideetan dauden bi digitu hamaseitarrek osatzen duten helbidea array baten 1. elementuaren helbidea da. Array horrek 16 elementu dauzka eta, beraz, C erregistroan 10h balioa sartuko dugu begizta zeharkatzeko zenbatzaile moduan erabiltzeko. B erregistroa ere zenbatzaile bat izango da; kasu honetan, 08 baino balio txikiagoa duen arrayaren elementu kopurua zenbatzeko erabiliko dena.

56

Kudeaketaren eta Informazio Sistemen Informatikaren Ingeniaritzako Gradua

Ordenagailuen Egitura

L1: sarrera

8085aren bloke-diagrama

57

8085aren erregistroak eta kontrol-unitatea

58

8085aren agindu-jokoa

59

Kudeaketaren eta Informazio Sistemen Informatikaren Ingeniaritzako Gradua

Ordenagailuen Egitura

L2: UAL

Inplementa ezazu gelako praktiketan diseinatutako UALa eta konproba ezazu horren funtzionamendua.

Diseina ezazu, lau biteko A eta B zenbakiak ( A[A3, A2, A1, A0] eta B[B3, B2, B1, B0]) sarrera moduan izanik, honako eragiketa hauek gauzatzen dituen UAL bat: Aritmetikoak: A; Aren gehikuntza (A+1); batuketa (A+B); kenketa (A-B) Logikoak: B; AND (A·B); OR (A+B); XOR (A B) Marraztu eragiketa aritmetikoetarako taula eta zirkuitua, eta eragiketa logikoetarako taula eta zirkuitua etapa baterako. Zenbat hautespen-seinale behar izan dituzu? Murriztu al daiteke kopuru hori? Zirkuitu integratuak:

7400 quad 2-input NAND gates 7402 quad 2-input NOR gates 7404 hex inverting gates 7408 quad 2-input AND gates 7410 triple 3-input NAND gates 7411 triple 3-input AND gates 7427 triple 3-input NOR gates 7432 quad 2-input OR gates 7486 quad 2-input exclusive-OR gates 7483 4-bit binary adder with fast carry 7485 4-bit magnitude comparator 74138 3-line to 8-line decoder/demux 74139 2 fully independent 2-to-4-line decoders/demultiplexers 74153 dual 1-of-4 line data selectors/mux 74154 4-line to 16-line decoder/demux

OHARRA: zirkuitu integratuen ezaugarri-orrien kopia bat (datasheets) eskuragarri dago laborategian kontsultatzeko.

60

Kudeaketaren eta Informazio Sistemen Informatikaren Ingeniaritzako Gradua

Ordenagailuen Egitura

L3: transferentzia-aginduak

1. Hartu 9101h memoria posizioko datua eta gorde metagailuan. 2. Gorde metagailuan dagoen datua memoriako 9000h posizioan. 3. Kargatu memoriako 9000h posizioko datua L erregistroan eta 9001h posizioko datua H erregistroan. 4. Gorde L eta H erregistroen edukia 9000h eta 9001h memoria-posizioetan, hurrenez hurren. 5. Kopiatu 9001h memoria-posizioko datua 9101h posizioan. 6. BC erregistroak erakusle moduan erabilita, gorde metagailuan horiek adierazitako memoria-helbidearen edukia. 7. Gorde metagailuaren edukia memorian, BC erregistro-bikoteak adierazitako posizioan. 8. Trukatu HL eta DE erregistro-bikoteen edukiak. 9. Gorde B erregistroaren edukia E erregistroan. 10. HL erregistro-bikotea memoriaren erakusle moduan erabiliz, gorde metagailuan horiek adierazitako helbideko edukia. 11. HL erregistro-bikotea memoriaren erakusle moduan erabiliz, gorde C erregistroaren edukia horiek adierazitako memoria-helbidean.

61

12. mov E,B; mov A,m eta mov m,C aginduak exekutatzen badira, zer gertatuko da F erregistroarekin? Eta PC erregistroarekin? (Arrazoitu erantzuna) 13. Kargatu metagailua 05h balioarekin. 14. Hasieratu HL erregistroak memoriaren 900A helbidearen erakusle moduan. 15. Gorde 05h datua memoriako 9001h posizioan, erakuslerik erabili gabe. 16. Gorde 05h datua memoriako 9001h posizioan, erakuslea erabilita. 17. Osatu taula kodigo zati hori, mihiztatzean memorian 8000h helbidetik aurrera kargatzen diren balioekin. Pausoz pauso exekutatu, eta PCaren edukiari erreparatuz erlazionatu aginduak eta memoriako balioak. Zer ondorioztatzen duzu? mvi B, 06 mov A, B lda 9000

Address Data

8000

8001

62

Kudeaketaren eta Informazio Sistemen Informatikaren Ingeniaritzako Gradua

Ordenagailuen Egitura

L4: agindu aritmetikoak

1. Batu B erregistroaren edukia metagailuarenari, eta kendu emaitzari 710 balioa (07h datua). 2. HL erregistro-bikoteak erakutsitako memoria-helbideko datua batu metagailuarenari, eta kendu emaitzari B erregistroaren edukia. 3. Batu 1210 balioa (0Ch balioa) metagailuaren edukiari, eta kendu emaitzari C erregistroaren edukia.

4. Kendu metagailuaren edukiari HL erregistro-bikoteak erakutsitako memoria-helbidean dagoen datua, eta gehitu emaitzari 1010 balioa (0Ah). 5. Gutxitu B erregistroaren edukia, eta gehitu unitate batean C erregistroarena. 6. Gehitu unitate batean HL erregistro-bikoteak erakutsitako memoria-posizioaren edukia. 7. Gutxitu unitate batean HL erregistro-bikoteak erakutsitako memoria-posizioaren edukia. 8. Batu B erregistroaren edukia eta aurreko eragiketaren bururakoa metagailuari; ondoren, gehitu unitate batean B erregistroan dagoen datua. 9. Batu metagailuari 910 balioa (09h) eta aurreko eragiketaren bururakoa; ondoren, gutxitu unitate batean C erregistroan dagoen datua. 10. Kendu metagailuari B erregistroaren edukia, bai eta aurreko eragiketaren bururakoa ere; ondoren, gehitu unitate batean C erregistroan dagoen datua.

63

11. Kendu metagailuari 210 balioa (02h) eta aurreko eragiketaren bururakoa; ondoren, gutxitu unitate batean C erregistroan dagoen datua. 12. Batu metagailuaren edukiari HL erregistro-bikoteak erakutsitako memoria-helbidean dagoen datua eta aurreko eragiketaren bururakoa. 13. Kendu metagailuaren edukiari HL erregistro-bikoteak erakutsitako memoria-helbidean dagoen datua eta aurreko eragiketaren bururakoa. 14. Gehitu unitate batean HL erregistro-bikotearen edukia (hurrengo memoria helbidea erakuts dezaten). 15. Gutxitu unitate batean HL erregistro-bikotearen edukia (aurreko memoria-helbidea erakuts dezaten).

64

Kudeaketaren eta Informazio Sistemen Informatikaren Ingeniaritzako Gradua

Ordenagailuen Egitura

L5: agindu logikoak

1. Gauzatu metagailuaren eta B erregistroaren edukien arteko AND eragiketa logikoa, eta utzi emaitza B erregistroan. 2. Gauzatu metagailuaren eta 9001h memoria-helbidean dagoen datuaren arteko AND eragiketa logikoa. 3. Metagailuan dagoen datuaren pisurik handieneko bita (MSB) ‘1’ edo ‘0’ den jakin nahi dugu; horretarako, maskara bat aplikatuko diogu metagailuari, bit guztiak, hau izan ezik, ‘0’an jartzeko. Zein da egin behar dugun eragiketa logikoa (balioa zehaztuz)? 4. Gauzatu metagailuaren eta C erregistroaren edukien arteko OR eragiketa logikoa, eta utzi emaitza C erregistroan. 5. Gauzatu metagailuaren eta 900Ah memoria-helbidean dagoen datuaren arteko OR eragiketa logikoa.

6. Metagailuan dagoen datuaren 0,1 eta 5 pisuko bitak ‘1’ean jarri nahi ditugu, besteak eraldatu gabe; horretarako, maskara bat aplikatuko diogu metagailuari. Zein eragiketa logiko egin behar dugu (balioa zehaztuz)? 7. Gauzatu metagailuaren eta D erregistroaren edukien arteko XOR eragiketa logikoa, eta utzi emaitza D erregistroan. 8. Gauzatu metagailuaren eta 9000h memoria-helbidean dagoen datuaren arteko XOR eragiketa logikoa.

65

9. Metagailuan dagoen datuaren ukatua lortu nahi dugu; horretarako, maskara bat aplikatuko diogu metagailuari. Zein eragiketa logiko gauzatu behar dugu (balioa zehaztuz)? 10. Metagailuaren eta B erregistroaren edukiak konparatu nahi ditugu, baina hauek eraldatu gabe. Zein eragiketa logiko erabiliko dugu? Non gordetzen da emaitza? Nola jakingo dugu A<B, A>B edo A=B den? 11. Eta metagailuaren edukia eta 9000 memoria-helbidean dagoen datua konparatu nahi baditugu? 12. Eta metagailuaren edukia 10 balio hamartarra (0Ah) baino txikiagoa den jakin nahi badugu?

66

Kudeaketaren eta Informazio Sistemen Informatikaren Ingeniaritzako Gradua

Ordenagailuen Egitura

L6: biraketa-aginduak

1. Egin 88h balio hamaseitarra zati bi biraketa-agindu batekin, eta utzi emaitza B erregistroan. 2. Egin 11h balio hamaseitarra bider bi biraketa-agindu batez baliatuz, eta utzi emaitza metagailuan. 3. Zein da beheko a) eta b) programen emaitza? Arrazoitu erantzuna (metagailuaren edukia irudikatu pasoz pauso).

a) mvi a, 81 b) mvi a, 81

ral ral

ral rlc

4. Zein da beheko a) eta b) programen emaitza? Arrazoitu erantzuna (metagailuaren edukia irudikatu pasoz pauso).

a) mvi a, 81 b) mvi a, 81

rlc rlc

rlc ral

5. Egin B erregistroan dagoen datuaren 1erako osagarria (emaitza Bn utzi). 6. Gauzatu C erregistroan dagoen datuaren 2rako osagarria (emaitza Cn utzi).

67

Kudeaketaren eta Informazio Sistemen Informatikaren Ingeniaritzako Gradua

Ordenagailuen Egitura

L7: jauzi-aginduak

1. Gutxitu unitate batean metagailuaren balioa; eragiketa honen emaitza zero bada, egin jauzi «zero» labelera eta gorde B erregistroan 0110 balioa; emaitza ez bada zero, ordea, egin jauzi «ez-zero» labelera eta gorde B erregistroan 0210 balioa.

Lehen ariketako programa adibide moduan eman da. Sartu metagailuan 02 balioa eta pausoz-pauso exekutatu zer gertatzen den aztertuz.

dcr A

jz zero

jnz ez_zero

zero:

mvi B,01

ez_zero:

mvi B,02

Eman orain metagailuari 01 balioa eta pausoz-pauso exekutatu, zer gertatzen da? Kontuz! Besterik adierazi ezean, exekuzio sekuentziala izango da, baina eragiketa bakarra burutu behar du! Konponbide bat hurrengoa izan daiteke: dcr A

jz zero

jnz ez_zero

zero:

mvi B,01

jmp amaiera

ez_zero:

mvi B,02

amaiera 2. Batu A eta B erregistroen edukia; emaitzak bururakoa eman badu, egin jauzi «bururakoa» labelera, eta gehitu Aren edukia D erregistroari bururakoarekin; ez badu bururakorik eman, ordea, egin jauzi «ez-bururakorik» labelera eta burutu (A)+(D) eragiketa bururakorik gabe. 3. A eta B erregistroen kenketa egin, eta idatzi emaitzaren arabera erregistro bat gehitzen duen programa: positiboa (edo zero) bada C erregistroa, eta negatiboa bada D erregistroa.

68

4. Paritate bikoitiarekin bidalitako hamar datu 9000h memoria-posiziotik aurrera biltegiratu dira; 9000h posizioko datutik hasita paritatea konprobatzen duen programa idatzi; errorerik egon bada, «errorea» azpierrutina exekutatu behar dugu posizio horretako bit guztiak «0»an jarriz; paritatea zuzena bada, exekuzio normala jarraitu (konprobatu hurrengo posizioko datua). 11. 9000h memoria-helbideko datuak «1» kopuru bakoitia badu, sartu 01h balioa B erregistroan. Sartu 02h balioa kontrako kasuan. 12. Kopiatu metagailuan B erregistroaren edukia, egin azpierrutina bateri deia, bertan dekrementatu metagailuko balioa unitate batean eta, emaitza zero bada, itzuli azpierrutinatik. 13. Zein desberdintasun dago beheko bi programen artean?

jmp salto1 call salto1

mvi a,01 mvi a,01

salto1: jmp fin

mvi b,01 salto1:

mvi b,01

ret

fin:

14. Zein desberdintasun dago beheko bi programen artean?

lda 9000 lda 9000

adi 00 adi 00

jp positiboa cp positiboa

mvi b,01 mvi b,01

positiboa: jmp fin

mvi d,01 positiboa:

mvi d,01

ret

fin:

69

Kudeaketaren eta Informazio Sistemen Informatikaren Ingeniaritzako Gradua

Ordenagailuen Egitura

L8: S/Iko deiak

Beheko programak bi zenbaki jasotzen ditu, bata 1. atakatik eta bestea 2.etik; C eta D erregistroetan kopiatzen ditu, eta «batuBCD» azpierrutinari deitzen dio. Zer egiten du azpierrutina horrek? Idatzi programa, eta exekuta ezazu pausoz pauso funtzionamendua konprobatzeko. Erreparatu PC eta SP erakusleek hartzen dituzten balioei. Osatu beheko taula, agindu bakoitza identifikatuz (kontuan izan guztiek ez dutela berdin okupatzen):

mnemonikoa helbidea agindua hex

in 01

mov c,a

in 02

mov d,a

mvi b,00

call sumarBCD

mov a,b

out 03

jmp fin

nop

nop

sumarBCD:

mov a,c

add d

mov b,a

ret

fin:

nop

70

Kudeaketaren eta Informazio Sistemen Informatikaren Ingeniaritzako Gradua Ordenagailuen Egitura L9: programa osoak

Idatzi eta konprobatu honako programa hauetarako kodigoak. 1- Irakurri memoriako 9000h posizioko edukia eta, 07h baino txikiagoa bada, gorde

bere balioa 9010h posizioan. 2- Irakurri memoriako 9000h posizioko edukia eta, 07h baino handiagoa edo berdina

bada, gorde 0Fh 9010h posizioan. 3- Memoriako 9000h posizioan array baten lehen elementua dago. Horren luzera 10

elementukoa dela jakinik, idatzi 9100h posizioan arrayaren elementu guztien batura gordeko duen programa.

4- Gelako praktiketan, bi zenbaki biderkatzeko eta baten faktoriala kalkulatzeko

fluxu-diagramak egin ziren (GP3). Idatzi eta konprobatu 8085ean faktoriala kalkulatzeko kodigoa.

5- Idatzi 9001h posizioko balioa etengabe irakurtzen duen programa, eta, balioa 03h

bada, eragiketarik gabeko bi atzerapen sartzen dituena ondoren, 3. atakan 01h balioa jartzeko.

6- Sentsore batek «1»ean jartzen ditu 9001h posizioko byte-aren bit guztiak, ura

maila jakin batera iristen denean. Hori gertatzen denean, gure programak zerbitzu-azpierrutinari deitu behar dio; bertan, metagailuaren balioa pilan gordeko du eta 9001h posizioko bitak berriro «0»an jarriko ditu, ondoren programa deitzailera itzuliz.

7- Memoriako 9000h posizioan array baten lehen elementua dago. Horren luzera 10

elementukoa dela jakinik, idatzi arrayaren elementuak txikienetik handienera ordenatuko dituen programa.

8- Memoriako 9000h posizioan array baten lehen elementua dago. Elementu guztiak

balio positiboak direla jakinik, bilatu arraya osatzen duten 10 elementuetatik txikiena, eta gorde bere posizio erlatiboa (arrayaren barruan duena) arrayaren azken elementuaren hurrengo memoria-posizioan.

71

Kudeaketaren eta Informazio Sistemen Informatikaren Ingeniaritzako Gradua Ordenagailuen Egitura L10: gertaeren bidez zuzendutako programazioa

Programazio sekuentziala (Batch) Programatzaileak definitzen du programaren fluxua eta kanpotik zein momentutan parte har daitekeen. Exekuzioa lineala da, eta sarrerako parametroak irakurri, eragiketa batzuk burutu eta emaitzak lortzean datza. Gertaeren bidez zuzendutako programazioa Kanpoko gertaerek definitzen dituzte programen egitura eta fluxua. Programatzaileak programak zein gertaera maneiatuko dituen definitzen du, baita horiei erantzun moduan exekutatuko den sekuentzia ere; baina erabiltzailea da, bere ekintzekin, programaren fluxua zuzentzen duena. Exekuzioa hastean programak erabiliko dituen parametroak hasieratzen dira, ondoren blokeatuta geratuz gertaera baten zain. Programa nagusia, beraz, kudeatzen dituen gertaera horietakoren bat gertatu den etengabe begiztatzen duen bukle bat da, baiezko kasuan gertaera horri dagokion kodigoa exekutatzera pasatzeko. Programazio mota hau da erabiltzaile-interfazearen oinarria. Guk Arduino [1] plataforma erabiliko dugu gertaeren bidez zuzendutako programa txikiak garatzeko. Arduino sw eta hw askeko plataforma programazio-lengoaiak eta IDE (garapenerako ingurune integratua)k osatzen dute. Erabiltzen duen programazio-lengoaia ezagutzen dituzuenen (C, Basic) oso antzekoa da; hala ere, praktika hauen xedea da gertaeren bidez zuzendutako programazioaren kontzeptua ulertu eta potentziala ikustea, ez programazio-lengoaia bat ikastea. Hori dela eta, oinarrizko kontzeptu batzuk ikusi ondoren zenbait adibide frogatuko ditugu, eta horiek emandako gakoak erabiliz gure programa idatziko dugu: semaforo baten argien kudeaketa (teorian, 2. gaian ikusitako adibidea). [1] http://arduino.cc/

72

OINARRIZKO ZENBAIT KONTZEPTU 1. Arduino txartela

2. Arduino programazio-lengoaia Programak hiru zati ditu:

1. Egitura.

Erabiliko diren konstante eta aldagaien definizioa

2. Balioak. void setup () { Giltza hauen artean, aurreko puntuan definitutakoak hasieratzen dira }

3. Funtzioak void loop () { Programa puntu honetan blokeatuta geratzen da, gertaeren zain dagoen bukle batean }

Arduino lengoaia C/C++ en oinarrituta dago; hemen zenbait oinarrizko kontzeptu baino ez dugu ikusiko; informazio gehiago: arduino.cc/en/Reference/HomePage helbidean.

Sintaxia ; lerroen amaieran // lerro bateko iruzkinak /* Iruzkin luzeagoak */ Kontrol-egiturak

73

if if…else for while do…while switch case … Eragile aritmetikoak = esleipena + ‒ * / % hondarra Konposatutako eragileak ++ inkrementua ‒ ‒ dekrementua … Eragile Boolearrak && AND ‒ OR ! NOT Bit mailako eragileak & and | or ^ xor ~ not << shift left >> shift right Konparaketarako eragileak = = != < > <= >= Aldagaiak eta konstanteak HIGH/LOW aldagai bitar batentzat gaituta/ezgaituta dagoela adierazten du. INPUT/OUTPUT pin bat sarrera/irteerakoa bezala hasieratzen du. true/false kontuz! int baten kasuan false=0, beste edozein balio true. Datu motak int zenbaki osoa char karaktere bat boolean aldagai boolearra (true/false balioak har ditzake) float koma higikorreko zenbakia

… S/I digitalak pinMode() pin bat sarrerakoa edo irteerakoa bezala definitzeko digitalWrite() pin batean idazteko (maila altua edo baxua jarri) digitalRead() pin baten balioa irakurtzeko S/I analogikoak analogRead() analogWrite() Bozgorailurako S/Iak tone (irteera, maiztasuna, iraupena) noTone tone funtzioan iraupena zehazten ez bada, noTone-rekin geldiarazi. Denboraren maneiua delay() programa zehaztutako denboraz (ms) geldiarazten du. delayMicroseconds()

74

Hemen adierazitakoak baina askoz funtzio gehiago daude; Arduinoren web-orrian eskuragarri duzue informazio guztia. Guretzako, momentuz, nahikoak dira; orain adibideetan aplikatuta ikusiko ditugu. Horretarako, dagoeneko zenbait sarrera eta irteera dituen Arduino Basic I/O txartela erabiliko dugu (txartelean adierazita dago zein pini lotuta dagoen elementu bakoitza).

a) Irteera digitala eta tenporizazioa – LED gorriaren keinada b) Sarrera digitala (gertakaria=pultsadorea) eta if sententzia – LED bat piztu/itzali pultsadoreen gertakarien arabera c) Soinua eta for sententzia – Maiztasun desberdineko soinuak a) LED GORRIAREN KEINADA

//Oinarrizko S/I plakan led gorria 11. pinari lotuta

int ledR = 11; // ledR izena ematen diogu.

// hasieratze errutina

void setup() {

pinMode(ledR, OUTPUT); //pin hau irteerako moduan definitzen dugu.

}

// buklea

void loop() {

digitalWrite(ledR, HIGH); //led gorria pizten dugu.

delay(1000); //segundo bat itxaroten dugu.

digitalWrite(ledR, LOW); // leda itzaltzen dugu.

delay(1000); // segundo bat itxaroten dugu.

}

b.1) LED BAT PIZTU PULTSADOREA SAKATZEAN

//Led gorria (11. pina) 12. pinari konektatuta dagoen pultsadorea sakatzean pizten da.

int pulsador = 12;

int ledR = 11;

// Pultsadorearen egoera ez da konstantea, aldagai bat da.

int estadoPulsador = 0; // zerora hasieratzen dugu.

void setup() {

pinMode(ledR, OUTPUT); // leda irteera bat da.

pinMode(pulsador, INPUT); // pultsadorea sarrera bat.

}

void loop(){

// pultsadorearen egoera aldagaira irakurtzen dugu.

estadoPulsador = digitalRead(pulsador);

// sakatuta badago…

75

if (estadoPulsador == HIGH) {

digitalWrite(ledR, HIGH); // … leda piztuta

}

// bestela…

else {

digitalWrite(ledR, LOW); // … itzalita

}

}

b.2) LED BAT PIZTU ETA ITZALI BI PULTSADOREREKIN

/* 12. pinari lotuta dagoen pultsadorea erabiliko dugu led gorria pizteko, eta 8. pinari

lotutakoa leda itzaltzeko */

//konstanteak

int pulsadorOn = 12;

int pulsadorOff = 8;

int ledR = 11;

// aldagaiak

int estadoPulsadorOn = 0;

int estadoPulsadorOff = 0;

int ledStateR = 0;

void setup() {

// irteerak hasieratu

pinMode(ledR, OUTPUT);

// sarrerak hasieratu

pinMode(pulsadorOn, INPUT);

pinMode(pulsadorOff, INPUT);

}

void loop(){

//ledaren egoera irakurri

estadoPulsadorOn = digitalRead(pulsadorOn);

// sakatuta badago, piztu

if (estadoPulsadorOn == HIGH) {

ledStateR = digitalRead(ledR);

if (ledStateR == LOW) {

digitalWrite(ledR, HIGH);}

}

estadoPulsadorOff = digitalRead(pulsadorOff);

if (estadoPulsadorOff == HIGH) {

ledStateR = digitalRead(ledR);

if (ledStateR == HIGH) {

digitalWrite(ledR, LOW);}

}

}

76

b.3) LED BAT PIZTU ETA ITZALI PULTSADORE BAKARRAREKIN

/*

Pultsadorea etengailu moduan erabili nahi badugu, ez dugu egoera detektatu behar,

egoera-aldaketa baizik.

*/

// 12. pinari lotutako pultsadorea eta 11.ari lotutako leda

int pulsador = 12;

int ledR = 11;

// egoera-aldaketak antzeman eta zenbatzeko aldagaiak

int contadorPulsador = 0;

int estadoPulsador = 0;

int estadoPrevioPulsador = 0;

void setup() {

pinMode(ledR, OUTPUT); // leda irteera bat da.

pinMode(pulsador, INPUT); //pultsadorea sarrera bat.

}

void loop() {

estadoPulsador = digitalRead(pulsador); //pultsadorearen egoera irakurtzen dugu.

if (estadoPulsador != estadoPrevioPulsador) { //aurrekoaren desberdina bada

if (estadoPulsador == HIGH) {

// trantsizioetako bat irakurtzen dugu, gorakoa adibidez.

contadorPulsador++;

}

}

//oraingo egoera hurrengo bueltan aurreko egoera izango da.

estadoPrevioPulsador = estadoPulsador;

//modulu funtzioak hondarra itzultzen du.

//zenbatekoa bikoitia bada, leda itzali.

if (contadorPulsador % 2 == 0) {

digitalWrite(ledR, LOW);

}

else {

digitalWrite(ledR, HIGH); //bestela, piztu.

}

}

77

c) MAIZTASUN DESBERDINEKO SOINUAK

/*

Pultsadorea sakatzen denean hiru maiztasun desberdineko soinuak entzungo ditugu,

jarraian, baina denbora-tarte batekin.

*/

int pulsador = 12;

int estadoPulsador=0;

int sonido = 2;

int N=1;

void setup() {

pinMode(pulsador, INPUT);

pinMode(sonido, OUTPUT);

}

void loop(){

estadoPulsador = digitalRead(pulsador);

// sakatuta badago…

if (estadoPulsador == HIGH) {

for (N; N<=5; N++) {

tone (sonido, N*2000, 2000); // N*2000Hz-eko soinua 2 segundoz.

delay(2000); //2 segundoko atzerapena, bestela bakarra

entzungo da.

}

}

}

SEMAFOROA (2. gaia) 2. gaian semaforo baten kontroladorearen adibide bat ikusi genuen. Badakigunez pultsadore bat noiz sakatzen den antzematen, ledak pizten eta itzaltzen eta denbora jakin batez egoera batean mantenduz, inplementatu dezagun semaforoaren adibidea gertaeren bidez zuzendutako programazioa bidez. Plakatxoaren led gorria, horia eta berdea erabiliko ditugu semaforoaren argien moduan; pultsadorea, bakoitzak nahi duena. a)Semaforo bat gorri dago oinezko batek eskaera-botoia sakatzen ez duen bitartean; hori gertatuz gero, laranjara pasatzen da, eta 5 s geroago berdera (oinezkoek 10 s dituzte gurutzatzeko); 10 s igaro ondoren, gorrira itzultzen da. b) Semaforo bat gorri dago oinezko batek eskaera-botoia sakatzen ez duen bitartean; hori gertatuz gero, laranjara pasatzen da, eta 5 s geroago berdera (oinezkoek 10 s dituzte gurutzatzeko); baina, orain, 5 s berdean egongo da eta azken 5 s-tan led berdeak keinada egingo du, eta aldi berean “beep” bat entzungo da. Denbora hori igaro ondoren, gorrira itzuliko da beste oinezko batek botoia sakatu arte.