3. UVOD U RAČUNARE 3.1 ŠTA RACUNAR MOŽE DA RADI?

Podobné dokumenty
Zend Framework Object Relation Model. Dr Nenad Kojić Marko M Spasojević inž. spec

Diferencne jednačine. Gospava B. Dor dević i Snežana S. Dor dević

Mediji za prenos podataka

IT Arhitektura Globalno Belma Ohranović IT Auditor

korisničko uputst vo 10/14 C-EBKU-03

Definition: Faktor potiskivanja srednje vrednosti signala predstaljva odnos diferencijalnog pojačanja i pojačanja srednje vrednosti signala

str. 16 Klub putnika - The Travel Club Svi putnički rečnici su besplatno dostupni na sajtu.

Irena Kovačević,dipl.med.techn. Krikšić,dipl.med.techn. Pavličić,dipl.med.techn., Ivanka Benčić,bacc.med.techn.

FAN COIL JEDINICE SINCLAIR

Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus

POWX1270 FIG A. Copyright 2015 VARO P a g e 1

SOFTVERSKA ARHITEKTURA ZA TRANSFORMACIJU GEOPROSTORNIH PODATAKA SOFTWARE ARCHITECTURE FOR TRANSFORMATION OF GEOSPATIAL DATA

cs Původní návod k používání Diagnostický přístroj pro snímače tlaku v pneumatikách

Strojový kód, assembler, emulátor počítača


Pregled proizvoda VIDEOINTERFONI KATALOG COMMAX VIDEOINTERFONI KUČNI TELEFONI POZIVNI TABLOI POVOLJNI SETOVI DODATNA OPREMA

Colostrum ESSENS. Potpuno prirodan proizvod

ContiPremiumContact 2

knjiga grafičkih standarda

Izjava o svojstvima. IZJAVA O SVOJSTVIMA Temeljem dodatka III Uredbe (EU) 305/2011 Sika WT-200 P

Pohled do nitra mikroprocesoru Josef Horálek

Državna matura u školskoj godini 2013./2014. Vodič kroz ispite državne mature

Merenje kvaliteta servisa i sporazum o nivou servisa

MIFID_FORMS_LIST_SLV

PROCESOR. Typy procesorů

Struktura a architektura počítačů (BI-SAP) 7

8. Laboratoř: Aritmetika a řídicí struktury programu

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

IČO: FK Kolín, a. You are using an outdated browser. Znao sam. IČO: pronájem nemovitostí, bytů a nebytových prostorerk

ZA HIDRAULIČKE SERVOUPRAVLJAČE

Procesor z pohledu programátora

Základní deska (1) Parametry procesoru (2) Parametry procesoru (1) Označována také jako mainboard, motherboard

Strojový kód k d a asembler procesoru MIPS SPIM. MIPS - prostředí NMS NMS. 32 ks 32bitových registrů ( adresa registru = 5 bitů).

Apartmán DA Svet KVATRICH Zagreb (2+2)

REŽIM TELEFON AKTIVACIJA REŽIMA TELEFON GLAVNE FUNKCIJE... 19

Základní deska (1) Označována také jako mainboard, motherboard. Deska plošného spoje tvořící základ celého počítače Zpravidla obsahuje:

Plán instalace. Sušička s tepelným čerpadlem. . Plan instalacije. Sušilica s toplinskom pumpom PT 8337 WP. hr - HR cs - CZ 08.

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Program "Světla" pro mikropočítač PMI-80

Izjava o svojstvima. IZJAVA O SVOJSTVIMA Temeljem dodatka III Uredbe (EU) 305/2011 Sikafloor -CureHard-18

HW počítače co se nalézá uvnitř počítačové skříně

Úvod SISD. Sekvenční výpočty SIMD MIMD

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Technické prostředky počítačové techniky


KOTLOVI ZA SAGOREVANJE BIOMASE KOTLE NA SPALOVÁNÍ BIOMASY

Strojový kód. Instrukce počítače

GLASOVI D&D. Jelena Anđelovska

HR INDUKCIJSKA PLOČA ZA UPUTE ZA UPORABU 2

Jako pomůcka jsou v pravém dolním rohu vypsány binární kódy čísel od 0 do 15 a binární kódy příkazů, které máme dispozici (obr.21). Obr.

éra elektrického proudu a počítačů 3. generace

Državna matura u školskoj godini 2015./2016. Vodič kroz ispite državne mature

Pregled proizvoda VIDEOINTERFONI 2016/17 VIDEOINTERFONI AUDIOINTERFONI INTERKOMI POZIVNI TABLOI PRIPREMLJENI SETOVI DODATNA OPREMA

Architektura počítače

vlagu koja je zaslužna za bakterijsku poliferaciju Oko 20-30% zgrada u Europi ima ovaj problem Izvor: 2009 Svjetsko zdravstveno izvješće O.M.S.

Integrated Remote Commander

2.8 Procesory. Střední průmyslová škola strojnická Vsetín. Ing. Martin Baričák. Název šablony Název DUMu. Předmět Druh učebního materiálu

Integrované obvody. Obvody malé, střední a velké integrace Programovatelné obvody


Hardware. Příklad převodu čísla: =1*32+0*16+0*8+1*4+0*2+1*1= Převod z dvojkové na desítkovou Sčítání ve dvojkové soustavě

Principy komunikace s adaptéry periferních zařízení (PZ)

Princip funkce počítače

Jak do počítače. aneb. Co je vlastně uvnitř

Efikasni i higijenski proizvodi za kupatila i toalete.

Laboratorní cvičení z předmětu Elektrická měření 2. ročník KMT

Úvod do informačních technologií

FREESCALE KOMUNIKAČNÍ PROCESORY

Upute za korištenje aplikacije EMA Polaznici edukacije. Sadržaj

Računalništvo in informatika Računalniška omrežja. Računalniška omrežja. Osnovni pojmi. prof. Andrej Krajnc univ. dipl.inž.

Instaliranje Kies-a (PC Sync)

Základní pojmy a historie výpočetní techniky

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

M{ZD{ CX _15R1_CX3_V3_COVERS.indd /05/ :22:22

Základy informatiky. 2. Přednáška HW. Lenka Carr Motyčková. February 22, 2011 Základy informatiky 2

Procesory, mikroprocesory, procesory na FPGA O. Novák, CIE 11 1

Pohled do nitra mikroprocesoru

Mašina za pranje veša Uputstvo za upotrebu Mašina za pranje rublja Priručnik za korisnika

Amparo signalne svjetiljke

Úvod. Instrukce musí obsahovat: typ operace adresu operandu (operandů) typ operandů modifikátory adresy modifikátory operace POT POT

PRILOGA ŠT. 1: Gasilski znak

Mikrokontroléry. Doplňující text pro POS K. D. 2001

CENOVNIK. Broj 11, važi od Dvopolni utikači16a 250V sa kontaktom za uzemljenje. Pakovanje br.

Další aspekty architektur CISC a RISC Aktuálnost obsahu registru

Přednášky o výpočetní technice. Hardware teoreticky. Adam Dominec 2010

C2115 Praktický úvod do superpočítání

Računalniške delavnice FMF: Delavnica MPI

ČESKÁ BESEDA OBCE LIPOVLANY ČEŠKA BESEDA OPĆINE LIPOVLJANI

MSP 430F1611. Jiří Kašpar. Charakteristika

Příklady popisu základních obvodů ve VHDL

ESF5541LOX HR PERILICA POSUĐA UPUTE ZA UPORABU 2 CS MYČKA NÁDOBÍ NÁVOD K POUŽITÍ 23 NL AFWASAUTOMAAT GEBRUIKSAANWIJZING 43

HR Upute za uporabu 2 Perilica posuđa CS Návod k použití 23 Myčka nádobí NL Gebruiksaanwijzing 43 Afwasautomaat FAVORIT56322WO FAVORIT56322MO

SEZNAM OBSAHU BALENÍ...

IZJAVA O SVOJSTVIMA CPR

MOĆ I POLITIČKO ODLUČIVANJE 2

požadovan adované velikosti a vlastností Interpretace adresy POT POT

SENCOR SDA 800 Digitalni foto album Korisnički priručnik

Seznámení s mikropočítačem. Architektura mikropočítače. Instrukce. Paměť. Čítače. Porovnání s AT89C2051

POWX FIG. A Copyright 2014 VARO

Matija Lokar: PODATKOVNE STRUKTURE VRSTA. List za mlade matematike, fizike, astronome in računalnikarje

Architektury CISC a RISC, uplatnění v personálních počítačích

Transkript:

3. UVOD U RAČUNARE Osamdesete i devedesete godine spominju se kao godine racunarske revolucije. Tada su se proizveli racunari cije su brzine i racunarska snaga hiljadama puta veci nego što je to bilo kod prvih komercijalnih racunara. Cena i dimenzije ovih racunara se ne razlikuju od onih za pisace mašine. Ova revolucija je nastupila kao rezultat razvoja integrisanih kola koja kombinuju mnoge elektronske komponenete na jednom silikonskom cipu, a posebno kola sa visokim stepenom integracije LSI (Large Scale Integration) i kola se veoma visokim stepenom integracije VLSI (Very Large Scale Integration). Takav stepen integracije može da postavi veoma veliki broj tranzistora -sada i milione komada na jedan jedini elemenat tz. cip. Ovakav tehnološki napredak je doveo do toga da je moguce napraviti ceo mozak racunara kao jedno integrisano kolo koje se naziva mikroprocesor. Dodatak od relativno malog broja drugih cipova formira kompletan mikroracunar. Od prvog komercijalnog digitalnog racunara iz 1940-te do današnjih mocnih racunara i revolucionarnog mikroracunara, postoji veoma mala promena u osnovnim principima rada. Iako je tehnologija otišla daleko od vremena kada su prvi racunari ušli u upotrebu, naši moderni racunari još uvek rade sa jedinicama i nulama, koristeci iste osnovne logicke operacije kao i njihovi prethodnici. U ovom poglavlju razmotricemo koncepte, principe i operacije koje su zajednicki za sve tipove racunara. 3.1 ŠTA RACUNAR MOŽE DA RADI? U najvecem broju slucajeva covek može da radi sve što može i racunar, ali racunar to da radi mnogo vecom brzinom i tacnošcu. Ovo je tacno bez obzira na cinjenicu da racunari izvršavaju samo jednu po jednu operaciju. Covek može da uzme listu od 10 brojeva i izracuna zbir svih, jednom operacijom ocitavajuci brojeve jedan za drugim i dodajuci jedan drugom kolonu po kolonu. Racunar sa druge strane može da sabere samo dva broja, tako da bi sabiranje deset brojeva zahtevalo devet dodatnih koraka. Naravno, cinjenica da je racunaru potrebna samo mikrosekunda (ili manje) po koraku, objašnjava njegovu efikasnost.

Mikroracunari Racunar je brži i tacniji od coveka, ali za razliku od coveka, mora mu se dati kompletan skup instrukcija koji mu govori šta tacno da radi u svakom koraku. Ovaj skup instrukcija, nazvan program, napravljen je od strane jednog ili više ljudi za svaki zadatak koji je dat racunaru da uradi. Ovi programi su smešteni u racunarskoj memoriji u binarno kodiranom obliku, pri cemu je svaka instrukcija ima svoj jedinstven kod (šifru - oznaku). Racunar uzima iz memorje samo jedan kod (šifru), i izvodi operaciju koja odgovara toj šifri. Racunari su našli svoj put i primenu u oblastima u kojima to nije bilo izvodljivo pre 20 godina (delom i zbog cene). Brzi porast u broju i raznovrsnosti racunarskih aplikacija, kao i pad cena postavio ih je na znacajno mesto u svim oblastima kao što su poslovne aplikacije, procesna kontrola, nauka, tehnologija i obrazovanje. 3.2 KAKO RACUNARI RAZMIŠLJAJU? Racunari ne razmišljaju! Racunaru programer obezbedjuje program koji se sastoji od instrukcija i podataka koji specificiraju svaki detalj o tome šta da radi i kada da radi. Racunar je samo brza mašina koja može da operiše podacima, da racuna, da donosi odluke na osnovu uporedjivanja - sve pod kontrolom programa. Ukoliko programer napravi grešku u programu ili stavi pogrešne podatke, racunar ce proizvesti pogrešan rezultat. Postavlja se pitanje: "Kako racunar izvodi program koji se sastoji od instrukcija?". Odgovor na ovo pitanje dobija se ukoliko se pogleda racunarska arhitektura (uredjenost njihovih razlicitih elemenata) i prodje korak po korak proces koji racunar prolazi u izvršavanju programa. 3.3 KOLIKO TIPOVA RACUNARA POSTOJI? Kao što je napomenuto svi racunari rade na isti nacin. Ipak postoji nekoliko faktora koji cine da se racunari razlikuju jedan od drugog. Ovi faktori su fizicka velicina, cena, brzina i dužina reci. Fizicka velicina i cena su same po sebi jasne. Brzina se odnosi na brzinu kojom racunar može da izvršava instrukcije. Racunarska rec se odnosi na 58

3. Uvod u racunare broj bitova koje sadrži osnovna jedinica podataka koju racunar može da obradi i smesti. Na primer, racunar sa 16-bitnom velicinom reci može da obradjuje podatke velicine 16 bita, i njegova memorija može da smesti 16- bitne reci. Racunar ce tada biti okarakterisan kao 16-bitni racunar. Na osnovu ovih faktora racunare možemo da klasifikujemo u tri kategorije: mikroracnare, miniracunare i velike racunare (mainframe). Mikroracunari Ovi najnoviji clanovi racunarske porodice su najmanji i najjeftiniji. NJihova mala dimenzija je rezultat LSI i VLSI tehnologije koja je pomenuta u ranijem poglavlju. Mnogi mikroracunari koriste integrisana kola (IC) u MOS tehnologiji. Kao rezultat, tipicni mikroracunar može da izvršava više od 250 000 instrukcija u sekundi. Iako je to veoma brzo za ljudske pojmove, to je mnogo sporije od miniracunara i velikih racunara. Mikroracunar obicno može da radi sa velicinom reci od 4,8,16 i 32 bita. Miniracunari Miniracunari su veci, mnogo skuplji od mikroracunara, i brži od mikroracunara. Koriste se u procesnoj kontroli, istraživanjima i poslovnim aplikacijama. Danas su mikroracunari sve boljih performansi, a razlika izmedju njih i miniracunara se smanjuje, što dovodi do korišcenja mikroracunara i u oblastima gde su se do skoro koristili miniracunari. Veliki racunari (mainframe) Veliki racunari su najvecih dimenzija, najskuplji, i najmocniji racunari. Možemo ih naci u velikim korporacijama, bankama, univerzitetima i istraživackim laboratorijama. Zahtevaju veliki prostor pošto ukljucuju razlicite tipove periferijske opreme. 3.4 OSNOVNA STRUKTURA RAČUNARA Bez obzira na razlike u performansama izmedju razlicitih tipova racunara svaki racunar ima pet osnovnih jedinica: aritmeticko /logicku jedinicu ALU, memorijsku jedinicu, upravljacku jedinicu, ulaznu jedinicu i izlaznu 59

Mikroracunari jedinicu. Slika 3.1 je blok dijagram koji predstavlja opšti racunarski sistem koji pokazuje vezu razlicitih jedinica (blokova). Slika 3.1 Opšti blok dijagram racunarskog sistema Uocavamo da je upravljacka jedinica centar dijagrama pošto funkcioniše kao mozak racunara, upravljajuci radom svih drugih blokova. Strelice u dijagramu pokazuju pravac u kome teku podaci ili upravljacki signali. Velika strelica pokazuje grupu paralelnih linija koje reprezentuje rec podataka, instrukciju ili adresu; manja strelica prikazuje upravljacke signale, koji su obicno jedna ili nekoliko signalnih linija. U daljem tekstu koristicemo uokvirene brojeve pored strelica radi opisa svake od jedinica. Memorijska jedinica U ovoj jedinici smeštena je grupa bitova (reci) koja reprezentujue instrukciju koju racunar treba da izvrši (npr. program), i podatke sa kojima treba raditi u programu. Memorija služi takodje i kao privremeno skladište rezultata operacija koje izvršava ALU (Aritmetic Logic Uninit - strelica 4). Memorijskom jedinicom upravlja upravljacka jedinica, koja signalizira operacije ocitavanje (READ) ili upisivanje (NJRITE) (strelica 6) i obezbedjuje odgovarajucu memorijsku adresu (strelica 7). Podaci koji treba 60

3. Uvod u racunare da se upišu u memoriju mogu da dodju iz ALU ili iz ulazne jedinice (strelica 8), a sve pod kontrolom upravljacke jedinice. Podaci koji su ucitani iz memorije mogu da se šalju ka ALU (strelica 2) ili ka izlaznoj jedinici (strelica 9). Kao što je vec napomenuto racunar ima internu i eksternu memoriju. Interna memorija je relativno malog kapaciteta, brza, i smešta programe i podatke koje racunar trenutno izvršava (kratkotrajno smeštanje). Poluprovodnicki RAM i ROM se obicno koriste kao interna memorija. Eksterna memorija je memorija velikog kapaciteta koja se koristi za smeštanje programa i podataka koje racunar trenutno ne koristi (smeštanje na duži period). Magnetne trake i diskovi su uobicajni tipovi eksterne memorije. Aritmeticko logicka jedinica Aritmeticko-logicka jedinica, ALU, obavlja aritmeticke i logicke operacije nad podacima. Upravljacka jedinica šalje signale ALU-u koja odredjuje koje operacije ce se izvšavati nad podacima (strelica 1). Upravljacka jedinica odredjuje i izvor podataka - memorijsku jedinicu (strelica 2) ili ulaznu jedinicu (strelica 3). Rezultat operacije može biti poslat u memoriju radi uskladištenja (strelica 4) ili ka spoljašnjoj jedinici (strelica 5). Ulazna jedinica Ulazna jedinica se sastoji od sklopova koji omogucavaju da podaci i informacije koji dolaze spolja ulaze u internu memoriju racunara ili ALU (strelice 3 i 8). Ovi sklopovi se obicno nazivaju periferije pošto su oni fizicki odvojeni od sklopova koji cine mozak racunara. Neke tipicne ulazne periferije su citac bušene trake, citac papirne trake, tastatura, teleprinter i analogno digitalni konvertori (ADC). Personalni racunari imaju tastaturu kao ulazni uredjaj. Nije retko da se magnetna traka i disk jedinice posmatraju kao ulazne periferije. NJihova glavna funkcija je da smeste podatke i programe koji se, posle komandi iz upravljacke jedinice, prenose u racunarsku internu memoriju. Izlazna jedinica Izlazna jedinica se sastoji od periferijskih uredjaja koji prenose podatke i informacije iz interne memorije ili ALU ka spoljašnjem svetu (strelice 5 i 9). 61

Mikroracunari Tipicne izlazne periferije ukljucuju LED displej, štampace, video monitore, TV prijemnike i digitalno analogne konvertore (DAC). Magnentne trake i disk memorijske jedinice mogu se smatrati i kao izlazne periferije (jedinice masovne memorije); podaci i program iz interne memorije smeštaju se u jednoj od spoljašnjih memorija na trajno cuvanje. Terminal je tastatura (kao ulazna jedinica) kombinovana sa jedinicom za vizuelno prikazivanje (kao što su štampaci ili video monitori). Kombinacija tastatura/video prikazivac (display) naziva se video terminal. Mikroracunar obicno ima jedan terminal, dok vecina velikih racunara i mnogi miniracunari imaju nekoliko terminala. Upravljacka jedinica Funkcija ove jedinice je sada jasna. Ona upravlja radom svih drugih delova racunara obezbedjujuci vremenske i upravljacke signale. Ona je kao dirigent u orkestru koji vodi racuna da je svaki od instrumenata u dobroj sinhronizaciji. Upravljacka jedinica uzima instrukciju iz memorije tako što šalje adresu (strelica 7) i komandu za ocitavanje (strelica 6) ka memorijskoj jedinici. Instrukcija (rec) iz memorije dolazi u upravljacku jedinicu (strelica 11). Ova instrukcijska rec, koja je u binarno kodiranom obliku, se dekoduje (preko logickih kola u upravljackoj jedinici) da bi se odredilo koja operacija se izvodi. Kada se operacije odrede, upravljacka jedinica generiše sekvencu signala koji je izvršavaju. Tako možemo reci da upravljacka jedinica ima zadatak da uzme, dekoduje i izvrši instrukcije koje su u memoriji (tzv. program). Centralna procesorska jedinica (CPU) ALU i upravljacka jedinica obicno su povezani u jednu jedinicu koja se naziva centralna procesorska jedinica CPU (Central Processing Unit). CPU je zaista "mozak" racunara jer kombinuje kola koja generišu sve upravljacke signale koji su potrebni za izvršavanje instrukcija sa kolima koja stvarno izvršavaju operacije koje instrukcije zahtevaju. Pojednostavljen dijagram racunarskog sistema Pošto smo se upoznali sa funkcijama pet osnovnih jedinica racunarskog sistema, možemo kombinovati neke od jedinica da bi dobili jednostavniji dijagram. Slika 3.2 pokazuje kako se racunar može predstaviti kao tri bloka. 62

3. Uvod u racunare CPU blok zamenjuje ALU i upravljacku jedinicu. Ulazno izlazni blok (I/O) je kombinacija ulaznih i izlaznih jedinica. Slika 3.2 (A) Pojednostavljeni dijagram racunara; (B) Dijagram mikroracunara Mikroracunar U mikroracunaru CPU je integrisano kolo koje se naziva mikroprocesor. Termini "CPU" i "mikroprocesor" se cesto koriste kao sinonimi. U racunarstvu je uobicajno da se mikroprocesor naziva mikroprocesorska jedinica - MPU (MicroProcesor Unit). Sumiracemo sledece cinjenice: 1. CPU je kombinacija ALU i upravljacke jedinice bilo kog racunara 2. Kada je CPU jedno integrisano kolo naziva se mikroprocesor i oznacavamo ga sa MPU. 3. MPU povezan sa memorijom i I/O predstavlja mikroracunar. 3.5. MIKROPROCESOR - M6800 MPU je LSI cip koji sadrži sva potrebna kola za izvršavnje funkcija CPUa. Postoji više razlicitih MPU-a koje proizvode razliciti IC proizvodjaci. Iako oni svi obavljaju suštinski iste funkcije, svaki od njih ima jedinstvene karakteristike koje ih cine razlicitim od drugih MPU-ova. Najveca razlika se javlja u dužini reci, broju i tipu instrukcija koje mogu da se izvrše, tipu spoljašnjih upravljackih signala i velicini memorije koju mogu da adresiraju. U ovom poglavlju analiziracemo jedan MPU, Motorolu 6800 kao jedan od najviše korišcenih MPU-ova i kao jedan od najeminentnijih clanova 63

Mikroracunari familije Motorola 6800. Bice dat prikaz detaljnog rada 6800 MPU, veza sa memorijom i I/O elementima da bi se napravio racunar na bazi mikroprocesora 6800, i kako ga programirati da bi izvršio željeni posao. 3.6 RACUNARSKA REC Prethodna analiza medjusobnog odnosa razlicitih jedinica racunarskog sistema je pojednostavljena. Da bismo ovu interakciju objasnili na malo detaljniji nacin, moramo se podsetiti na nekoliko tipova informacija koje se prenose i sa kojima se stalno radi u okviru racunara. Kao što je napomenuto, osnovna jedinica informacije u racunaru je rec. Iako je rec napravljena od nekoliko bitova, racunar tretira rec kao jednu celinu i smešta svaku rec u odredjenu memorijsku lokaciju. Rec u mikroprocesorima je obicno dugacka 8 (bajt), 16 ili 32 bita. Rec smeštena u racunarskoj memoriji, može da predstavlja nekoliko tipova informacija: (1) binarne numericke podatke, (2) kodirane podatke, (3) adrese koje su deo instrukcija. 3.7 BINARNA REC PODATAKA Ovo su reci koje jednostavno predstavljaju numericku velicinu u binarnom brojnom sistemu. Na primer lokacija u memoriji 8-bitnog (jedan bajt) mikroracunara može da sadrži rec 01110011, što odgovara broju 115 10. Primer 16-bitne reci podataka: što je ekvivalent za 41 289 10 1010000101001001 Velikom dužinom reci se može predstaviti veliki broj podataka. Sa 8- bitnom reci najveca rec podataka (11111111 2 ), ekvivalentna je sa 2 8-1=255 10. Sa 16-bitnom reci najveca vrednost je 2 16-1=65535 10. Sa 32 bita (4 bajta) može se predstaviti broj veci od 4 biliona. 64

Rec podatka sa znakom 3. Uvod u racunare Racunar se ne bi mogao upotrebiti ako bi radio samo sa pozitivnim brojevima. Zbog toga mnogi racunari za predstavljanje brojeva koriste drugi komplement sa znakom. Potsetimo se da je bit sa najvecom težinom - bit znaka (0 za pozitivan i 1 za negativan broj), tako da ce brojevi +9 i -9 biti predstavljeni u 8-bitnom racunaru. U sistemu sa znakom mogu se sa 8 bita predstaviti samo brojevi od -128 10 do +127 10, a sa 16-bitova -32768 10 do +32767 10. Kombinovanje reci podatka Cesto je racunaru potrebno da obradjuje podatke koji su veci od podataka odredjenog velicinom reci. U takvim slucajevima, podaci se mogu predstaviti preko dve ili više reci koje mogu biti smeštene u uzastopne lokacije. Na primer, mikroracunari sa 6800 MPU, rade sa 8-bitnim podatkom. 16-bitni broj kao što je 1010101100101001 može se smestiti u dve uzastopne memorijske lokacije na sledeci nacin: Mem. adresa Sadržaj 0030 10101011 8 viših bitova od 16-bitnog broja 0031 00101001 8 nižih bitova od 16-bitnog broja Vidimo da je 8 bitova vece težine 16-bitnog broja smešteno na memorijskoj adresi 0030 i naziva se bajt vece težine. Slicno, 8 bitova manje težine 16-bitnog broja (bajt manje težine) je smešteno na memorijskoj adresi 0031. Kombinacija ova dva bajta sacinjava kompletan 16-bitni broj. 6800 MPU ce obradjivati 16-bitni broj u dva koraka, bajt po bajt. Heksadecimalno predstavljanje brojeva Zbog jednostavnijeg pisanja, podaci se mogu predstaviti u heksadecimalnom brojnom sistemu. Na primer broj +116 10 može se 65

Mikroracunari predstaviti kao jedan bajt 01110100 2. NJegove heksalna, decimalna i oktalna reprezentacija su: 01110100 2 =74 16 01110100 2 =164 8 Važno je napomenuti da je upotreba heksadecimalne reprezentacije pogodnija za korisnika racunara. U racunarskoj memoriji su smeštene jedinice i nule, i to je ono što racunar obradjuje. 3.8 KODIRANI PODACI Podatak koji racunar obradjuje ne mora da bude binarni broj. Drugi nacin predstavljanja podatka je BCD kod, gde grupa od 4 bita predstavlja jednu decimalnu cifru. Tako, 8-bitna rec može da predstavlja 2 decimalne cifre, itd. Mnogi racunari mogu da izvršavaju aritmeticke operacije sa BCD kodiranim brojevima kao deo njihovog normalnog instrukcijskog repertoara. Drugi, narocito neki mikroracunari, zahtevaju poseban napor programera da bi izvršili BCD aritmetiku. Rec podatka ne predstavlja samo numericke podatke. Cesto se koristi za predstavljanje slova i drugih specijalnih znakova koji koriste kodove kao što su 7-bitni ASCII kod. ASCII kod koriste svi proizvodjaci mikroracunara. Osnovni ASCII kod koristi 7 bitova, a sa 8-mim bitom, koji se koristi za parnost ili proširenje skupa znakova, dobija se jednobajtni ASCII kod. Sledeci primer pokazuje kako poruka, koristeci ASCII kod, može da bude smeštena u uzastopnim memorijskim lokacijama (sekvenci memorijskih lokacija). Sadržaj svake od lokacija je dat u heksadecimalnom kodu. Koristeci tabelu za ASCII kod može se odrediti poruka. Uocimo da je bit najvece težine bit parnosti i da je prvi karakter smešten na lokaciji 012A 16. Lokacija adrese Binarno Heksadecimalno 012A 11001001 C9 012B 10111101 BD 012C 01010110 56 012D 10101111 AF 012E 11010010 D2 ASCII 66

3. Uvod u racunare Dekodovana poruka je Omov zakon, I= V/R. Jednobajtni ASCII kod je posebno podešen za racunare sa 8-bitnom velicinom reci. U stvari, ostali racunari (velicine reci 16, 32) takodje koriste jednobajtni ASCII. Na primer, 16-bitni racunar može da spakuje dva bajta u jednu memorijsku rec tako da svaka rec predstavlja dva karaktera. Ovo je ilustrovano na sledeci nacin: Interpretacija reci podatka Pretpostavimo da je receno da je odredjena rec podatka u mikroracunarskoj memoriji 01010110. Ova rec se može interpretirati na više nacina. Može da bude binarna reprezentacija broja 86 10, može da bude BCD reprezentacija 56 10, ili može da bude ASCII kod karaktera V. Kako ce podatak biti interpretiran? Zavisi od programera pošto ona (ili on) smeštaju podatak u memoriju zajedno sa instrukcijama koje zajedno cine program. Programer zna koji tip reci podatka se koristi i mora se uveriti da racunar interpretira podatke tacno (preko programa koji izvršava, a koji se sastoji od instrukcija). 3.9 INSTRUKCIJSKA REC Program se sastoji od sekvence binarno kodiranih instrukcija koje CPU mora da uzme iz memorije, dešifruje (dekoduje) i izvrši. Za mnoge racunare instrukcijska rec od koje je sacinjen program može da nosi dva tipa informacija: operaciju koja treba da se izvrši i adresu operanda (podatka) nad kojim se operacija izvršava. Racunari koji imaju veliku dužinu reci mogu sve to da smeste u jednu racunarsku rec, dok mikroracunarima treba više od jedne reci. Pre nego što vidimo kakav je format instrukcija u 8- bitnom mikroracunaru, posmatracemo format instrukcijske reci za racunare sa velikom dužinom reci. Slika 3.3 pokazuje primer instrukcijske reci hipoteticnog 20-bitnog racunara. 20 bitova je podeljeno u dva dela. Prvi deo (bitovi 16-19) sadrže 67

Mikroracunari kod operacije (op. kod). Cetvorobitni kod ukazuje na operacije koje CPU treba da izvrši. Svaki od mogucih op. kodova predstavljaju pojedine operacije kao što je sabiranje ili oduzimanje. Drugi deo (bitovi 0-15) je adresa operanda, odnosno adresa u memoriji odakle ce podaci (operand) biti uzeti ili gde ce biti upuceni, zavisno od operacije koja se izvršava. Sa 4 bita koji se koriste kao op. kod, postoji mogucnost od 2 4 =16 razlicitih operacionih kodova, gde svaki id njih oznacava drugu operaciju. Ovo znaci da je racunar, koristeci ovu instrukcijsku rec, ogranicen na 16 razlicitih instrukcija koje može da izvrši. Racunar koji ima više instrukcija, zahteva više bitova za svoj operacioni kod. U svakom slucaju, svaka instrukcija koju racunar može da izvršava, ima specifican op. kod koji racunar (upravljacka jedinica) mora da interpretira (dekoduje). Ova instrukcijska rec ukazuje racunaru da uradi sledece: Uzmi rec podatka smeštenu na adresnoj lokaciji 5A72, pošalji u ALU, saberi sa brojem u akumulatorskom registru. Zbir ce biti smešten u akumulatoru (prethodni sadržaj akumulatora je izgubljen). Format instrukcije u mikroracunarima Osmobitni MPU (kao 6800) ne može da smesti operacioni kod i adresu operanda u jednu 8-bitnu rec; zato kod njega postoje tri instrukcijska formata: jednobajtan, dvobajtan i trobajtan. Ovo je ilustrovano na slici 3.4 68

3. Uvod u racunare Slika 3.4 Formati instrukcija u 8-bitnim mikroprocesorima Jednobajtna instrukcija sadrži samo 8-bitni kod operacije; nije specificiran operand. Pošto ne postoji adresa operanda ove instrukcije se koriste kod onih operacija koje ne zahtevaju pristup delu memorije sa podacima. Na primer instrukcija - obriši sadržaj akumulatora CLRA (Clear Accumulator), koja nalaže MPU-u da postavi sve bitove u akumulatoru na 0. Pošto je akumulator registar koji je deo MPU-a ne postoji potreba za adresom operanda. 6800 MPU koristi op. kod 01001111 2 (ili 4F 16 ) da bi predstavio operaciju CLRA. Razliciti mikroprocesori koriste razlicite op. kodove da bi reprezentovali CLRA operaciju. Generalno, razliciti MPU-ovi imaju razlicit skup op. kodova zbog razlike u projektovanju upravljackih kola. Prvi bajt u dvobajtnoj instrukciji prikazan na slici 3.4 je op. kod, a drugi bajt je 8-bitni kod adrese, koji odredjuje adresu operanda. Ova dva bajta su uvek smeštena u memoriji naznacenim redosledom. To je ilustrovano na sledeci nacin: Memoriska Memorijska rec 69

Mikroracunari Adresa (Heks.) Binarno Heks Opis. 0200 1001011 96 Operacioni kod za LDA 0 0201 0101110 5E Adresa na kojoj su podaci koji treba da se ucitaju u akumulator 0202 1001011 97 Operacioni kod za STA 1 0203 1000101 0 8A Adresa gde ce sadržaj akumulatora biti smešten U levoj koloni je spisak adresa lokacija u memoriji u kojima je svaki od bajtova smešten. Druga i treca kolona daju stvarne reci smeštene u svakoj memorijskoj lokaciji u binarnom ili heksadecimalnom obliku. U koloni sa desne strane nalazi se opis znacenja svake memorijske reci. Bajt smešten na adresi 0200 je op. kod, deo prve instrukcije; op. kod 6800 za instrukciju LDA (Load Accumulator). Bajt smešten na 0201 je deo prve instrukcije koji se odnosi na adresu operanda. Kompletna dvo-bajtna instrukcija nalaže MPU da uradi sledece: Uzmi podatke koji se nalaze na memorijskoj adresi 5E i stavi ih u akumulator. Sadržaj adrese 5E ostaje nepromenjen. Bajt smešten na adresi 0202 je op. kod za sledecu instrukciju; tj. op. kod za instrukciju STA (STore the Accumulator). Bajt smešten na 0203 je deo adrese operanda druge instrukcije. Kompletna dvobajtna instrukcija nalaže MPU-u da uradi sledece: Uzmi sadržaj akumulatora i smesti ga na memorijsku adresu 8A. Sadržaj akumulatora ostaje nepromenjen. Ukoliko posmatramo trobajtnu instrukciju na sl. 3.4, vidimo da je prvi bajt op. kod. Drugi i treci bajt formiraju 16-bitnu adresu operanda. Primer trobajtne instrukcije je sledeci: Memoriska Memorijska rec Adresa Binarno Heks. Opis 70

3. Uvod u racunare (Heks.) 0020 10111011 BB Operacioni kod za ADD 0021 00110101 35 Viši bajt adrese operanda 0022 11110110 F6 Niži bajt adrese operanda Instrukcija nalaže MPU da uradi sledece: Uzmi podatke smeštene u memoriji na adresi 35F6, doda ih sadržaju akumulatora, i rezultat smesti u akumulator. Jasno je da je trobajtna instrukcija isto što i dvobajtna osim što se koristi duži kod za adresu. Mnogi MPU, npr. 6800, dozvoljavaju da je adresa operanda bilo 8-bitna (jedan bajt) ili 16- bitna (dva bajta). Videcemo da 6800 uvek koristi 16-bitnu adresu, cak i kod dvobajtne instrukcije. Izvršavanje programa Program se sastoji od instrukcija koje tacno nalažu racunaru šta da radi korak po korak. Za 8-bitni racunar program ce se sastojati od jednobajtne, dvobajtne i trobajtne instrukcije smeštene u memoriji. Program može da bude smešten u RAM-u (ukoliko postoji mogucnost da ce se program kasnije menjati) ili u ROM-u (ukoliko program ostaje za stalno u memoriji). MPU ce uzeti (ucitati), dekodovati (dešifrovati) i izvršiti instrukciju iz memorije jednu po jednu, pocevši od unapred definisane pocetne adrese. Pošto 8-bitni racunar koristi više od jedne memorijske reci po instrukciji, MPU mora da obavi više operacija ocitavanja, tj. uzimanja, pre nego što izvrši samu instrukciju. Ovo je ilustrovano na slici sl. 3.5 MPU uvek pocinje sa uzimanjem bajta op. koda, a zatim dekoduje op. kod da bi odredio šta da uradi sledece. Op. kod je taj koji ukazuje MPU da li treba da uzme adresu operanda pre izvršavanja instrukcije, i da li su potrebne jedna ili dve operacije uzimanja da bi se dobila adresa operanda. MPU neprekidno ponavlja seriju koraka, dok ne naidje na op. kod za instrukciju zaustavljanja HLT (Halt), što oznacava zaustavljanje izvršavanja naredbi. U zavisnosti od tipa instrukcije menjace se i vreme potrebno da MPU izvrši instrukciju. To nije samo posledica razlike u adresi operanda, vec i zbog razlicitih sekvenci dogadjaja koji se odvijaju za vreme faze izvršavanja. 71

Mikroracunari Slika 3.5 Serija koraka MPU-a u izvršavanju program Primer 3.1 6800 MPU radi sa 8-bitnom recju i 16-bitnom adresom. a) Koliki je maksimalan broj razlicitih instrukcija koje MPU može da izvršava? b) Koliki je maksimalan kapacitet interne memorije sa kojom može MPU da komunicira? Rešenje: a) Sa 8-bitnim op. kodom, postoji 2 8 =256 mogucih op. kodova, svaki predstavlja razlicitu instrukciju. Projektanti 6800, su odlucili da koriste samo 197 op. kodova. b) 16-bitni adresni kod odredjuje 2 16 = 65 546 razlicitih memorijskih lokacija. Maksimalan kapacitet ce tada biti 65 546 X 8 ili 64K X 8. 72

3. Uvod u racunare Primer 3.2 Koliko operacija uzimanja MPU treba da obavi pri izvršavanju instrukcije sabiranja (ADD) podataka iz memorijske lokacije A2FF sa akumulatorom? Rešenje: Cetiri operacije uzimanja se zahtevaju: jedna za uzimanje op. koda, još dve druge za uzimanje adrese operanda (A2FF), i trece za uzimanje podataka koji se dodaju akumulatoru za vreme faze izvršavanja. 3.10 6800 MPU - POJEDNOSTAVLJENA VERZIJA Pošto smo objasnili osnovne korake koje MPU cini za vreme izvršavanja instrukcija, možemo se malo detaljnije osvrnuti na MPU. Mikroprocesor je veoma kompleksan modul koji sadrži najveci deo logickih kola, veci broj registara sa razlicitim funkcijama i veliki broj signalnih linija koje povezuju njih sa drugim elementima u mikroracunaru. Pojednostavljen dijagram 6800 MPU prikazan je na slici 3.6. Prvo cemo opisati funkcije svakog od elementa na dijagramu, zatim cemo opisati u kakvoj su oni medjusobnoj vezi za vreme izvršavanja programa. MPU je deo uokviren debelom crnom linijom, a pokazana je i veza sa memorijom. Zbog jednostavnosti, na ovom dijagramu nismo pokazali nikakve I/O blokove. Mi cemo pretpostaviti da su program i podaci vec u memoriji. U MPU-u postoje tri spoljašnja magistrale (bus) (van MPU) i dve u okviru MPU-a. Spoljašnja adresna magistrala i magistrala podataka je proširenje istih magistrala u okviru MPU-a, tako da stvarno postoje samo tri razlicite magistrale: adresna magistrala, magistrala podataka i upravljacka magistrala. Adresna magistrala ima 16 linija. Ona nosi 16-bitni adresni kod iz MPU-a ka memorijskoj jedinici da bi odabrao memorijsku lokaciju kojoj MPU pristupa zbog operacija ocitavanja (READ) i upisivanja (NJRITE). Adresna magistrala je jednosmerna pošto informacije teku samo u jednom pravcu. Magistrala podataka je 8-linijska dvosmerna magistrala preko koje 8- bitne reci mogu da budu poslate iz MPU-a u memoriju (operacija upisivanja), ili iz memorije ka MPU-u (operacija ocitavanja). Iako se naziva "magistrala podataka", informacije koje se prenose ovom magistralom nisu uvek podaci koji se obradjuju. Cesto su to instrukcijski kodovi (op. kod, adresa operanda) koje MPU uzima. 73

Mikroracunari 74

3. Uvod u racunare Upravljacka magistrala je grupa svih upravljackih vremenskih signala potrebnih za sinhronizaciju rada MPU sa ostalim delovima racunara. Neke od upravljackih linija su izlazne iz MPU-a, a druge su ulazne u MPU od I/O blokova. Najveci broj 8-bitnih mikroprocesora kao M6800 ima 8-bitnu magistralu podataka i 16-bitnu adresnu magistralu. MPU registri Podsetimo se da MPU sadrži ALU i upravljacke delove mikroracunara. On takodje sadrži nekoliko registara koji se koriste za smeštanje razlicitih tipova podataka potrebnih MPU-u da bi obavljao svoje funkcije. Drugim recima ovi registri služe kao memorijske lokacije posvecene odredjenoj funkciji, a nalaze se unutar MPU IC kola. Svaki od registara na slici 3.6 je oznacen svojim pravim imenom i skracenicom, a broj u zagradi specificira velicinu registra u bitima. Mi cemo i u daljem tekstu koristiti ove skracenice. Vidi se da je najveci broj registara vezan za unutrašnju magistralu podataka, tako da informacije mogu da budu prenete izmedju ovih registara i memorijske jedinice koristeci magistralu podataka. Programski brojac (PC) Ovaj registar normalno radi kao 16-bitni brojac koji kontroliše sekvence u kojima se instrukcije uzimaju iz memorije. U svakom trenutku, sadržaj PC pokazuje adresu u memoriji sa koje ce se preuzeti sledeci bajt instrukcijskog koda. Kad MPU treba da dobije (uzme) bajt instrukcijskog koda, upravljacki signali iz bloka za vremenske i upravljacke signale postavljaju sadržaj PC-a na internu magistralu i pamte ga u adresnom lec (lach - držanje) baferu koji upravlja spoljašnjom adresnom magistralom. Na taj nacin se memoriji prezentira 16-bitni adresni kod jednak broju u PC-u. Da bi se pripremio za sledecu operaciju uzimanja, PC brojac se uvecava. Registar adrese podatka (Data Adress Register - DAR) PC obezbedjuje adresu u memoriji instrukcijskog koda za vreme operacije uzimanja. Za vreme faze izvršenja instrukcije, kada MPU treba da pristupi memoriji, DAR obezbedjuje adresu operanda u memorijskoj jedinici. Na primer za vreme izvršenja "smesti akumulator"-sta (Store the Accumulator) DAR sadrži adresu operanda (zavisno od lokacije u memoriji 75

Mikroracunari gde sadržaj akumulatora treba da se smesti). Signali iz vremenskog i upravljackog bloka smestice sadržaj DAR-a na internu magistralu i držati ga u lec-baferu adrese. Tako, možemo kazati, da PC uvek sadrži adresu instrukcije koja se odnosi na programski deo memorije, a DAR uvek sadrži adresu podataka (operanda), a koja se odnosi na deo memorije za podatke. Instrukcijski registar (Instruction Register) Da bi dobio (uzeo) kod operacije iz programske memorije, MPU pomocu svojih upravljackih kola generiše signale koji rade sledece: (1) postavljaju sadržaj PC na adresnu magistralu; (2) postavljaju R/W=1 za operaciju ocitavanja; i (3) uzimaju rezultujucu memorijsku rec sa magistrale podataka i smeštaju je u instrukcijski registar (IR). Tako na kraju ovog procesa, IR sadrži op. kod. IR sadrži op. kod dok ga instrukcijski dekoder dekoduje i javlja vremenskoj i upravljackoj logici da generiše odgovarajucu sekvencu upravljackih signala da bi završila odgovarajucu instrukciju. Akumulator (Accumulator) i registar podataka (Data Register) Za vreme faze izvršenja instrukcije ova dva registra sadrže operande nad kojima ALU izvršava operaciju. Registri su napunjeni operandima iz memorije. Rezultat ALU operacije se prenosi u akumulator. Akumulator i DR mogu preko magistrale podataka da dobiju podatke iz memorije, a akumulator može da pošalje podatke u memoriju. 3.11. IZVRŠAVANJE PROGRAMA Sada smo spremni da sagledamo kako razliciti 6800 MPU registri i kola rade zajedno u stvarnom programu. U ovom trenutku nas samo interesuje kako program radi. Zato cemo iskoristi veoma jednostavan program koji sabira dva 8-bitna binarna broja. Pre nego što pogledamo primer programa, moramo da znamo koje se instrukcije mogu koristiti u ovom programu. Svaki mikroprocesor ima listu instrukcija za koju je projektovan da radi. Ovo se zove instrukcijski skup (instruction set). 6800 ima 197 razlicitih instrukcija u svom instrukcijskom skupu, ali cemo mi za sada koristiti samo njihov mali deo. One su date u sledecoj tabeli 3.1 76

3. Uvod u racunare Prva kolona u tabeli daje ime operacije koju instrukcija izvršava. Druga kolona je mnemonik svake instrukcije. Mnemonik je obicno skracenica od dva ili tri slova, koja se koristi da bi predstavila instrukciju. Treca kolona daje heksadecimalni op. kod svake instrukcije. Poslednja kolona daje opis operacije koju izvode instrukcije. Operacija Punjenje akumulatora Smeštanje akumulatora Dodavanje akumulatora Tabela 3.1 Neke instrukcije 6800 Skracenica Op Opis instrukcije kod LDA A6 Akumulator se puni podacima iz mem. lokacije sa adrese koja je data sa dva bajta koja se nalaze odmah posle op. koda STA B7 Sadržaj akumulatora se smešta u adresu koja je data u dvobajtnoj adresi operanda ADD BB Podaci sa memorijske lokacije koja je odredjena dvobajtnom adresom operanda dodaje se akumulatoru Oduzimanje SUB B2 Isto kao i sabiranje samo se podaci oduzimaju od sadržaja akumulatora Zaustavljanje HLT 3E Zaustavi sve operacije Skok JMP 7E Puni programski brojac sa dvobajtnom adresom operanda i uzima op. kod sa te adrese (kao GO TO u Basicu, ili u Fortranu) Grananje ako je nula BELJ 27 Ukoliko poslednja operacija daje kao rezultat nulu, dodaj bajt koji je iza op. koda PC-u, i uzmi sledecu instrukciju sa te nove adrese. U suprotnom uzeti sledecu instrukciju. Posmatrajuci ovu tabelu možemo uociti da osim HLT instrukcije, koja ne zahteva adresu operanda sve ostale instrukcije koriste dvobajtnu adresu operanda. BELJ instrukcija je specificna i nju cemo detaljnije razmotriti kasnije. 77

Mikroracunari Primer za izvodjenje programa. U daljem tekstu dat je kratak program koji koristi neke od instrukcija iz prethodne tabele. Prva kolona pokazuje adresu u memoriji gde se program smešta a druga kolona daje sadržaj svake memorijske lokacije. Obe su iskazana u heksadecimalnoj notaciji, ali ne treba zaboraviti da su one u racunaru u binarnom obliku. Ponovo podrazumevamo da je program vec u memoriji, i za sada ne vodimo racuna kako se on tamo našao. Memorijska Memorijska Mnemonik Opis adresa rec 0020 A6 LDA Napuni akumulator A 0021 50 Adresa 0022 01 operanda X 0023 BB ADD Dodaj Y sadržaju A 0024 50 Adresa 0025 02 operanda Y 0026 B7 STA Smesti A 0027 50 Adresa gde 0028 03 A treba smestiti 0029 3E HLT Operacija zaustavljanja Funkcija ovog programa je da sabere dva 8-bitna broja (X i Y) koji su smešteni u delu memorije za podatke na adresama 5001 i 5002. Zbir se smešta na adresu 5003. Izvršavanje programa Da bi zapoceo izvodjenje programa, programski brojac mora da bude postavljen na adresu prve instrukcije. U našem slucaju pocetna adresa je 0020. Pretpostavicemo da je upravljacko vremenska logika TCL (Time Control Logic) vec postavila programski brojac na 0020 i necemo za sada voditi racuna o tome kako je to izvedeno. 1. Uzimanje op. koda za LDA. TCL postavlja [PC]= 0020 na adresnu magistralu tako da memorija prima adresni kod. TCL postavlja R/W =1 za operaciju ocitavanja. Memorija odgovara stavljajuci rec A6 sa adrese 0020 na magistralu podataka. TCL cini da se rec upisuje u IR. Ovaj stav se može simbolicno predstaviti ŠM] [IR], a ilustrovano je sledecom slikom 3.7. 78

3. Uvod u racunare 2. Inkrementiranje (uvecavanje za 1) PC-a. Programski brojac se uvecava za jedan tako da je [PC]= 0021. Simbolicno se piše [PC] [PC]+1. Ovim se PC priprema za sledecu operaciju uzimanja. 3. Dekodovanje op. koda. Instrukcijski dekoder dekoduje op. kod (A6) i signalizira TCL-u da pocne da generiše sekvence uprvaljackih signala potrebnih da bi se nastavilo uzimanje i izvršavanje LDA instrukcije. Slika 3.7 MPU uzima op. kod sa adrese 0020 4. Uzimanje adrese operanda (bajt vece težine). TCL postavlja [PC] = 0021 na adresnu magistralu i postavlja R/W=1. Memorija odgovara postavljajuci rec 50 na magistralu podataka. Sa ovim bajtom se puni viši bajt u DAR-u. Zapamtimo da je DAR 16-to bitni registar (dva bajta). Ovaj korak može biti simbolizovan sa [M] [DAR]. 5. Uveca se programski brojac [ PC ] na 0022. 6. Uzimanje adrese operanda (bajt manje težine). TCL postavlja 0022 na adresnu magistralu, i postavlja R/W=1. Memorija odgovara postavljajuci rec 01 na magistralu podataka, i TCL je smešta kao bajt manje težine u DAR. Sada DAR sadrži adresu operanda 5001. Ovaj korak možemo simbolizovati sa [M] [DAR]. 7. Uveca se programski brojac [PC] na 0023. 79

Mikroracunari 8. Izvršava se LDA. Adresa operanda iz DAR-a je postavljena na adresnu magistralu, i R/W = 1. Memorija odgovara postavljajuci podatak sa adrese 5001 na magistralu podataka, a to je operand X. TCL obezbedjuje da se ovim podacima napuni akumulator. Ova operacija se može simbolizovati sa [M] [A] i ilustrovano je slikom 3.8 Slika 3.8 MPU puni akumulator operandom X 9. Uzimanje op. koda za ADD. TCL postavlja [PC] = 023 na adresnu magistralu i postavlja R/W = 1. Memorija postavlja rec BB na magistralu podataka, i TCL puni instrukcijski registar sa ovim bajtom. Simbolicno prikazano [M] [IR] 10. Uvecava se [ PC ] na 0024 11. Dekodovanje op. koda. Instrukcijski dekoder signalizira TCL-u da zapocne generisanje sekvenci upravljackih signala potrebnih za nastavak izvodjenja ADD instrukcije. 12. Uzimanje adrese operanda (bajta vece težine). Adresa 0024 iz PC se stavlja na adresnu magistralu i R/W = 1. Memorija zatim stavlja rec 50 na magistralu podataka da bi se napunio DAR. Simbolicno [M] [DAR H ]. 13. Uvecanje [PC] na 0025. 80

3. Uvod u racunare 14. Uzimanje adresa operanda (bajt manje težine). Adresa 0025 iz PC-a se postavlja na adresnu magistralu i R/W =1. Memorija zatim postavlja rec 02 na magistralu podataka da bi se sa njim napunio DAR. Simbolicki [M] [DAR L ]. Na ovom mestu DAR sadrži adresu operanda 5002 15. Uvecanje [PC] na 0026. 16. Izvršavanje ADD. Adresa operanda 5002 iz DAR-a se nalazi na adresnoj magistrali, i R/W se postavlja na visok nivo (1). Memorija postavlja podatak sa lokacije 5002 na magistralu podataka; ovo je operand Y. TCL zatim puni ovim podacima registar podataka (DR) i daje komandu ALU-u da ih doda akumulatoru (koji sadrži operand X). Rezultat se stavlja u akumulator. Simbolicno [M]+ [A] [A] 17. Uzimanje op. koda za STA. ŠPC]=0026 se smešta na adresnu magistrlu i R/W se postavlja na visok nivo. Memorija zatim postavlja rec B7 na magistralu podataka, i zatim se smešta u IR. 18. Uvecavanje [PC] na 0027 19. Dekodovanje op. koda 20. Uzimanje adrese operanda (bajta vece težine) iz memorijske lokacije date sa [PC]=0027 i stavlja ga u bajt vece težine DAR. 21. Uveca se [PC] na 0028. 22. Uzimanje adrese operanda (bajta manje težine) sa adrese 0028 i stavlja ga u bajt manje težine DAR-a. DAR sada sadrži adresu operanda 5003. 23. Uvecava se [PC] na 0029. 24. Izvršava STA. Adresa operanda 5003 iz DAR-a se stavlja na adresnu magistralu. TCL zatim postavlja sadržaj akumulatora na magistralu podataka i postavlja R/W na 0 (tj. briše je), tako da se [ A ] upisuje u memorijsku lokaciju 5003. Simbolicno [A] [M]. 81

Mikroracunari 25. Uzimanje op. koda za HLT sa adrese date sa [PC] = 0029 i njime se napuni IR. 26. Uvecanje ŠPC] na 002A. 27. Dekodovanje op. koda 28. Izvršavanje HLT. MPU zaustavlja sve dalje operacije. 3.12 INSTRUKCIJE GRANANJA I SKOKA Za sada necemo razmatrati kompletan skup instrukcija 6800 MPU-a. U stvari postoje dva tipa instrukcija koje cemo analizirati zbog nacina na koji oni menjaju redosled instrukcija koje izvršava 6800 MPU. Pre nego što krenemo dalje, potsetimo se na instrukcije JMP i BELJ koje su opisane u Tabeli 3.1 Instrukcija skoka JMP Primer koji je analiziran u prethodnom poglavlju može se opisati kao pravolinijski. Tako se zove zato što MPU uzima instrukcije iz memorije sa adrese 0020 i nastavlja redom dok ne naidje na instrukciju HLT na lokaciji 0029. Ovo se realizuje uvecavanjem [ PC ] posle svake operacije uzimanja. Iako su pravolinijski programi jednostavni za pisanje i razumevanje, oni mogu da reše ograniceni broj zadataka. Mnogi programi koriste tehniku koja se naziva "petlje". Petlje omogucavaju MPU-u da prekine normalni pravolinijski redosled izvodjenja programa i skoci, ili se grana do drugih delova programske memorije da bi nastavio izvodjenje programa. Instrukcija JMP (skok) nalaže MPU-u da skoci do odredjene memorijske adrese (ne one koja je po redosledu) za svoju sledecu instrukciju. U BASIC jeziku bi ova instrukcija odgovarala GOTO instrukciji. U daljem tekstu je prikazan primer korišcenja JMP instrukcije: Mem. adresa Mem. rec Mnemonik Opis 0329 4F CLRA Obriši [A] na 0 82

3. Uvod u racunare 032A 7E JMP Skoci na 035F po sledecu instrukciju 032B 03 Adresa sledece instrukcije 032C 5F 032D _ 032E _.. 035F B7 0360 01 STA Smešta [A] u mem. lokaciju 0127 0361 27 Ovo je deo programa smešten u memoriji. Pretpostavimo da MPU izvršava ovaj program. Pretpostavimo dalje da je upravo završio izvršavanje CLRA instrukcije na 0329. Sledeci korak je da uzme kod JMP instrukcije na 032A. Kada MPU odredi da je to JMP instrukcija, zna da dvobajtna adresa sledi op. kod. Uzima adresu (035F) u dva koraka. Zatim zamenjuje tekuci sadržaj programskog brojaca PC(032D) sa 035F. Sa programskim brojacem koji sadrži adresu 035F MPU ce uzeti sledeci op. kod sa ove adrese. Drugim recima umesto da uzme instrukciju sa 032D, MPU skace preko adrese 032D i 032E i ide na 035F. Kao što ovaj primer pokazuje JMP instrukcija je trobajtna instrukcija. Bajt op. koda je pracen sa dvobajtnom adresom skoka koja ukazuje MPU-u gde da skoci. BELJ (Grananje ukoliko je rezultat 0) instrukcija Pored bezuslovnog skoka postoji još jedan nacin da se promeni redosled izvršavanja instrukcija. To su instrukcije za uslovno grananje. M6800 ima više instrukcija za uslovno grananje. Mi cemo da se zadržimo na BELJ kao reprezentu ove grupe instrukcija. Prvi bajt je naravno op. kod. Drugi bajt je binarni broj sa znakom, takozvano relativni adresni odstupanje (ofset) ili jednostavno pomeraj. Pomeraj nije adresa, nego broj koji treba dodati programskom brojacu da bi se formirala nova adresa. Ovo je ilustrovano programskom sekvencom : Mem. Mem. rec Mnemoni Opis adresa k 0200 B2 SUB Oduzmi sadržaj adrese 029B od 0201 02 akumulatora. Ostavi rezultat u 0202 9B akumulatoru 0203 27 BELJ Ukoloko je rezultat prethodne. 83

Mikroracunari 0204 14 operacije nula, nastavi program na 0219. 0205. 3E. HLT Ukoliko nije, idi na 0205 0219 B7 STA Smesti ŠA] na adresu 0127 021A 01 021B 27 Pretpostavimo da je MPU upravo završio izvršavanje SUB instrukcije na 0200-0202 i da je u akumulatoru rezultat. MPU zatim uzima op. kod na 0203. Kada MPU detektuje da je to BELJ instrukcija, uzima bajt sa ofsetom sa lokacije 0204, a zatim treba da napravi odluku o nastavku programa, na osnovu rezultata poslednje operacije. SUB operacija je dala rezultat tacno nula (tj. 00 16 = 00000000 2 ), MPU ce dodati bajt odstupanja na tekuci sadržaj PC-a. Sa [ PC ] = 0205 posle uzimanja bajta odstupanja bice [ PC ] = 0205 + ofset = 14 novi [ PC ] = 0219 Novi sadržaj PC je 0219, pa ce MPU napraviti skok do adrese 0219 po svoju sledecu instrukciju i nastavice dalje od te instrukcije. Ukoliko rezultat SUB operacije nije jednak nuli, MPU nece dodati odstupanje [ PC] -a i nastavice sa instrukcijom po redu (tj. nema skoka). Za one kojima je blizak BASIC, PASCAL BELJ instrukcija je vrlo slicna IF-THEN instrukciji. 3.13 HARDVER, SOFTVER I FIRMVER Racunarski sistem se sastoji od hardvera, softvera i firmvera. Hardver oznacava sve elektronske, mehanicke i magnetne uredjaje od kojih se fizicki sastoji racunar. Kolicina hardvera se menja u širokim granicama od malih mikroracunara do velikh (mainframe) racunarskih sistema, ali je jedna stvar zajednicka za sve racunare - hardver je beskoristan bez programa. Softver se odnosi na programe koji upravljaju aktivnostima racunarskih sistema od ukljucenja, pa sve do iskljucenja. Sav softver spada u jednu od dve kategorije: aplikativni softver ili sistemski softver. Aplikativni softver se koristi za specificne zadatke kao što su statisticka analiza, upravljanje industrijskim procesima ili proizvodnja video igara. Sistemski softver je 84

3. Uvod u racunare opštiji od aplikacijskog; on podržava sav aplikacijski softver upravljajuci osnovnim funkcijama racunara. Na primer, sistemski softver kontroliše inicijalizacioni proces kog se racunar pridržava odmah po ukljucenju. Još jedan primer je sistemski softver koji nam omogucava da udjemo u programe na jeziku kakav je, na primer BASIC ili PASCAL.. Sav softver mora da se nalazi u racunarskoj internoj memoriji, u momentu kad treba da se izvrši. Tipicno, softver se smešta u internu memoriju iz spoljne memorije (kao što je npr. traka, CD ili disk). Kada je program u ROM memoriji, on se cesto naziva i firmver, pošto je uvek tu (firm - nepokretno). Poznat primer firmvera su ROM kasete sa video igrama. 3.14 PROGRAMSKI JEZICI - MAŠINSKI JEZIK Programiranje podrazumeva pisanje programa u nekom kodu ili jeziku, koji racunar može da interpretira ili izvršava. Danas postoje mnogi programski jezici; oni idu od korišcenja 0 i 1, pa sve do upotrebe izraza na engleskom jeziku. Svaka vrsta jezika ima svoje mane i prednosti u odnosu na druge vrste, kao što ce biti pokazano. Ma koji jezik programer koristio, program na kraju mora biti preveden na jedini jezik koji racunar razume, a to je jezik 0 i 1 - koji se naziva mašinskim jezikom. Racunar izvodi specificne operacije na osnovu specificnih binarnih nizova (op kodova), koji formiraju skup naredbi (instrukcijski set). Ti binarni nizovi predstavljaju stvarni jezik koji te mašine (racunari) razumeju i sa kojim rade. Proizvodjaci definišu mašinski jezik (set instrukcija) koji njihovi racunari razumeju. U opštem slucaju, svaki racunar razlicitih proizvodjaca imace i razlicit mašinski jezik. Na primer, Motorolin mikroprocesor 6800 za instrukciju sabiranja koristi kod 10111011, dok MOS Technology 6502 koristi kod 01101101. To naravno znaci da program, napisan na mašinskom jeziku jedne mašine, nece raditi na drugoj. Od ovog pravila postoji tek nekoliko izuzetaka, kad proizvodjac namerno kopira instrukciski set drugog proizvodjaca. Ordinarni takav primer je Zilog-ov LZ-80, ciji je instrukcijski set kopija Intelov-ov 8080A, uz neke dodatne instrukcije. Zadatak (object) svakog programa je da stavi mašinski kod, za odredjeni niz instrukcija, u memoriju racunara. Zbog toga, mašinski program stavljen u memoriju racunara cesto se naziva objektni program. Kada programer napiše program na papiru u mašinskom jeziku, on ce se sastojati od niza nula i 85

Mikroracunari jedinica. Na primer, dalje u tekstu prikazan je kratak objektni program za sabiranje dva broja (za Motorolu 6800): 1 0 1 1 0 1 1 0 0 1 0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 0 1 0 0 1 0 0 1 1 1 1 1 1 1 1 0 1 0 1 1 0 1 1 1 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 Jasno, funkcija ovog programa nije baš ocigledna, sem za onoga koji ga je napisao, ili možda za nekoga ko napamet zna sve kodove Motorole 6800. Cak i onaj koji je napisao program, imace muke da ga odgonetne posle izvesnog vremena. Pisanje programa direktno u binarnom mašinskom jeziku ima nekoliko mana. Prvo, vrlo je teško, sem za najjednostavnije programe, napisati program bez ijedne greške, jer posle izvesnog vremena svi nizovi nula i jedinica pocinju da lice jedni na druge. Greške je teško pronaci u moru 0 i 1. Takodje, proces unosa programa je zamoran i lako može da proizvede grešku - svaki bajt se unosi preko osam prekidaca na pultu racunara, što za program od npr. samo 100 bajtova iznosi 800 razlicitih položaja prekidaca. Heksadecimalni mašinski jezik Mašinski jezik se može poboljšati korišcenjem oktalnog ili heksadecimalnog koda (heksadecimalni se standardno koristi). Programer piše program koristeci heks. kod da bi sa njim predstavio op. kod, adrese operanda i podatke. Gornji program u heks. kodu bi izgledao ovako: B6 49 FF BB 49 FE B7 53 86

3. Uvod u racunare 00 3F Pisanje programa u heks kodu je ocigledno jednostavnije i manje podložno greškama, jer svaki unos zahteva samo dva znaka umesto osam. U heks kodu je i grešku lakše naci. Heks program se u racunar unosi preko heks tastature. Naravno, heks program mora biti pretvoren u binarni objektni program pre nego što se unese u memoriju. Za tu svrhu postoji program u ROM-u koji se izvršava dok se unose podaci sa tastature (program za nadgledanje tastature). Program za nadgledanje detektuje koji heks. tasteri su pritisnuti, konvertuje ih u binarni kod i unosi u memoriju. Programiranje u heks kodu, iako savršenije od binarnog, daleko je od pogodnog. Takodje, heks. program je još uvek težak za citanje ili razumevanje. 3.15 ASEMBLERSKI JEZIK Programiranje na mašinskom jeziku (binarnom ili heks) je najniži nivo programiranja. Taj naziv se koristi zato što programer komunicira sa racunarom na osnovnom (najnižem) nivou. Neke od teškoca komuniciranja na tom nivou prevazidjene su u sledecem višem nivou jezika - asemblerskom jeziku. Umesto korišcenja binarnog ili heks koda za pisanje instrukcija, u asembleru se koriste mnemonici. Mnemonici se lako pamte jer im se nazivi i biraju prema funkciji koju vrše. Svaki proizvodjac mikroprocesora uz svoje MPU uvek daje i listu mnemonika koji se na njima koriste. Dalje u tekstu je data asemblerska verzija heks programa za sabiranje dva broja (za Mororolu 6800). Asemblerski program se cesto naziva i izvorni (source) program, jer ce on kasnije biti preveden na mašinski objekt program. Asemblerski izvorni program Mem. adresa Mnemonik instrukcije Komentar 0200 LDA $49FF ; Uzmi prvi podatak 0203 ADD $49FE ; Dodaj drugi podatak 0206 STA $5300 ; Smesti zbir u memoriju 87

Mikroracunari 0209 HLT ; Zaustavi se Svaka linija na ovoj listi sadrži jednu kompletnu instrukciju. Potsetite se da se svaka instrukcija može sastojati od jednog, dva ili tri bajta. U koloni a "memorijska adresa" nalaze se samo adrese bajta op. koda za svaku instrukciju. Na primer, op. kod za LDA instrukciju bice na adresi 0200, a adresa operanda ce biti na memoriskoj adresi 0201 i na 0202. Op. kod za ADD bice na 0203, itd. Podsetimo se da kolona "mnemonik" daje mnemonik i adresu operanda za svaku instrukciju. Znak za dolar ($) ispred adrese operanda znaci da je ona (adresa) data u heks kodu. Prema tome, LDA $49FF je asemblerska instrukcija sa znacenjem: "napuni akumulator sadržajem memorijske lokacije sa heks adrese 49FF", dok STA $5300 znaci: "napuni memorijsku lokaciju na adresi $5300 sadržajem akumulatora". Kolona "komentar" se cesto koristi na listinzima asemblerskih programa da bi bilo ociglednije šta program radi, mada se to i bez nje može dosta lako videti. Asembliranje programa Asemblerski izvorni program se lakše piše i lakše prati od mašinskog, ali se on na kraju ipak mora prevesti na mašinski, pre nego što se ucita u memoriju i izvede. Taj posao prevodjenja (konverzije) naziva se asembliranje izvornog programa. Jedan od mogucih metoda za ovaj proces je rucno asembliranje, što jednostavno znaci da za svaki mnemonik programer treba da pronadje odgovarajuci kod i time zameni svaku liniju asemblerskog programa mašinskim kodom koji se zatim unosi u memoriju i izvršava. Na primer, da bi se asemblirala prva linija iz gornjeg primera treba pronaci op. kod za mnemonik LDA. 88