Assembly programozás. szerkesztette: Iványi Péter. September 27, 2010
|
|
- Edit Király
- 7 évvel ezelőtt
- Látták:
Átírás
1 Assembly programozás szerkesztette: Iványi Péter September 27, 2010
2 2
3 Tartalomjegyzék 1 Bevezetés RISC és CISC processzor architektúrák Assembly elsőre Miért tanuljunk assembly nyelvet? Mikor ne használjunk assembly nyelvet? A magas szintű programozási nyelvek előnye Az assembly hátrányai Mielőtt elkezdenénk assembly-ben programozni Szintakszis Assemblerek MASM GAS TASM NASM Melyik assembler? Összefoglalás Ellenőrző kérdések A számítógép felépítése A processzor Végrehajtási ciklus A rendszer óra Címzési architektúra Három címes architektúra Két címes architektúra Egy címes architektúra Zéró cím architektúra Load/Store architektúra Regiszterek Végrehajtási sorrend Branching Memória Memória műveletek
4 2.5.2 Olvasási ciklus Olvasási ciklus Memória típusok Byte sorozatok tárolása Adat alignment problema Input/Output I/O eszközök elérése Összefoglalás Ellenőrző kérdések A processzor Általános regiszterek Szegmentált címzés először Címzési módok Direkt címzési mód Indirekt címzési mód Státusz regiszter Ellenőrző kérdések NASM assembler Egy forrás file szerkezete Pszeudo utasítások DB és társai RESB és társai Konstansok TIMES pszeudo utasítás SEG kulcsszó További hasznosítási területek WRT kulcsszó Parancssori opciók Hibaüzenetek DEBUG program Jelölések A DEBUG indítása A DEBUG parancsai Példák Példa Példa Példa Első programok Első program Egy karakter kinyomtatása
5 6.3 Egy szöveg kinyomtatása Egy karakter beolvasása Assembly nyelv utasításai Adatmozgató utasítások MOV XCHG XLAT LDS LES LEA PUSH PUSHF PUSHA POP POPF POPA LAHF SAHF Matematikai utasítások INC DEC ADD ADC SUB SBB MUL IMUL DIV IDIV NEG CBW CWD Bitforgató és bitléptető utasítások RCL RCR ROL ROR SAL, SHL SAR SHR Logikai utasítások AND
6 7.4.2 OR XOR NOT TEST CMP Vezérlésátadó utasítások JMP Feltételes utasítások JCXZ LOOP LOOPNZ LOOPZ CALL RET INT String kezelő utasítások MOVSB, MOVSW CMPSB, CMPSW LODSB, LODSW STOSB, STOSW SCASB, SCASW REP REPZ REPNZ Processzor vezérlő utasítások CLC STC CMC CLD STD CLI STI Egyéb utasítások NOP IN OUT Ellenőrző kérdések Assembly programokról Programozási módszer Megszakítások Hardware-es megszakítások Megszakítások 8086-os processzorokon
7 8.2.3 INT 21h megszakítás Kivételek Kitérő Linux-ra COM programok Program Segment Prefix EXE programok XOR használata Assembly integer aritmetika BCD aritmetika Ellenőrző kérdések Példa programok Egy byte bináris kinyomtatása Egy hexadecimális szám kinyomtatása Egy byte hexadecimális kinyomtatása Egy decimális számjegy ellenőrzött beolvasása és kinyomtatása Egy karakter beolvasása és módosítása Öt karakter bolvasása és kinyomtatása fordított sorrendben Két egyjegyű szám összeadása Egy karakter n-szeri kinyomtatása Téglalap kinyomtatása Sakktábla nyomtatása ASCII tábla kinyomtatása Szám kiírása decimális formában Olvasás a memóriából Közvetlen videó memóriába írás Szöveg beolvasása Beolvasott szövegben karakterek számlálása Beolvasott szöveg nagy betűsre konvertálása Feladatok Függvények A verem adatszerkezet A verem implementációja Verem műveletek A verem használata Értékek időleges tárolás Függvények definíciója Egymásba ágyazott függvényhívások Paraméter átadás függvényeknek Paraméter átadás regiszteren keresztül Paraméter átadás memórián keresztül Paraméter átadás vermen keresztül Érték és cím szerinti paraméter átadás
8 Változó számú paraméter átadása függvénynek Lokális változók függvényekben ENTER és LEAVE utasítások Rekurzív függvények Hatékonyság Ellenőrző kérdések Feladatok Makrók Egy soros makrók Több soros makrók Címkék makrókban Greedy makró paraméterek Makrók és függvények még egyszer Makrók gyűjtemények Ellenőrző kérdések String műveletek String utasítások String másolás Stringek összehasonlítása Keresés stringek-ben LODSB és STOSB utasítások használata String utasítások előnyei és hátrányai Ellenőrző kérdések Példák függvényekre és szöveg kezelésre Szöveg hosszának megállapítása C és assembly programok kapcsolata Függvény hívási konvenciók bites mód bites mód Optimalizálás Optimalizálás sebességre Sorrenden kívüli végrehajtás Utasítás betöltés és dekódolás Utasítás késleltetés és átbocsátási képesség Függőségi lánc megtörése Ugrások és függvény hívások Optimalizálás méretre Memória hozzáférés optimalizálása Ciklusok optimalizálása Vector programozás
9 15.6 Problémás utasítások Optimalizált példák ASCII tábla nyomtatása rövidebben Megjegyzések Szokásos hibák A ASCII táblázat 179 B Felhasznált irodalom 181 Példa programok listája Tárgymutató
10 10
11 1. Fejezet Bevezetés Ez a jegyzet egy összeállításnak, szerkesztett jegyzetnek indult inkább, mint egy önálló könyv. A jegyzet anyagát igyekeztem úgy összeszedni, hogy az egy egységes egészt alkosson. A jegyzet célja az assembly nyelv megismertetése a hallgatókkal. Ugyanakkor az assembly nyelv nagyon erősen kötődik a processzor architektúrához, így az assembly programozáshoz az architektúrával is meg kell ismerkedni egy kicsit. A jegyzet kifejezetten az Intel x86-os processzorának alacsony szintű programozásával foglalkozik, ezek közül is a 8086-os processzorral. Ez az egyik legkorábbi Intel processzor és furcsának tűnhet a választás, hogy 2010 környékén is erről a processzorról beszélünk. A jegyzet írása során fő célom az volt, hogy az alapokat minden hallgató meg tudja érteni és el tudja sajátítani. Ehhez egy viszonylag egyszerű processzorra volt szükség és főleg ezért választottam a 8086-os processzort alapul. A másik indok, hogy a szimulátorok és virtuális gépek biztos támogatják ezt a processzort és így bármilyen környezetben lehet az assembly programozást gyakorolni. Így a jegyzet főleg kezdőknek szól, de azt remélem, hogy a gyakorlottabb hallgatók is profitálnak a jegyzet elolvasásából. A jegyzet természetesen igyekszik foglalkozni az újabb utasításokkal és módszerekkel, amiket például a Pentium processzorokra fejlesztettek. 1.1 RISC és CISC processzor architektúrák A processzor architektúrák két nagy csoportba sorolhatók: CISC (Complex Instruction Set Computers) 1, RISC (Reduced Instruction Set Computers) 2. A domináns processzor architektúra a piacon a Pentium processzor, ami a CISC családhoz tartozik, de ugyanakkor a jelenlegi trendek szerint egyre inkább a RISC architektúra kerül előtérbe. A RISC processzorok közé tartoznak a MIPS, SPARC, PowerPC és ARM processzorok. A 64-bites Itanium is RISC alapú processzor. Mit jelent az, hogy komplex utasítás a CISC architektúra esetén? Két szám összeadása egyszerű műveletnek számít. Ugyanakkor, ha egy tömböt átmásolunk és közben a tömb mutatókat folyamatosan frissítjük, az már komplex utasításnak számít. 3 A RISC rendszerek csak egyszerű utasításokat használnak, és bizonyos feltételeket is szabnak. Például az utasítások argumentumainak a regiszterekben kell lenniük és nem a memóriában. 1 Szabad fordításban: Komplex utasításkészletű számítógép 2 Szabad fordításban: Egyszerűsített utasításkészletű számítógép 3 Létezik ilyen utasítás a CISC processzorokon, ez a MOVSB utasítás, lásd bekezdés. 11
12 1.2 Assembly elsőre Az assembly nyelven írt programokat processzálni kell egy másik program, assembler, által ami gépi kódot generál. A gépi kódot fogja futtatni a processzor. Nézzünk néhány assembly utasítást: inc [result] mov [meret], 45 add [mask1], 256 Az első sorban megadott utasítás megnöveli a result változó értékét. A második sorban megadott utasítás a 45-ös értéket tölti a méret változóba, míg a harmadik utasítás 256-ot add a mask1 változóhoz. A fenti kódrészlet C programozási nyelven a következőképpen néz ki: result++; meret = 45; mask1 = mask1+ 256; A példa alapján a következőket lehet megállapítani az assembly nyelvről: Az assembly nyelv utasításai kriptikusak. Az assembly nyelv műveleteit mnemonikok írják le, például add vagy mov. Az assembly nyelv utasításai nagyon alacsony szintűek. Például a következőt már nem írhatjuk le 4 : mov [meret], [adat] A 1.1. táblázat néhány assembly utasítást és a neki megfelelő gépi kódot mutatja. A táblázatnál az első észrevétel, hogy a RISC processzorokon az utasítások hossza fix. (Ezzel is csökkentve a komplexitást.) A másik fontos észrevétel, hogy a gép kód megértése nagyon nehéz az emberek számára, hiszen több ezer szám kombinációt kellene megjegyezni. Ugyanakkor közvetlen, egy az egyes megfeleltetés van az assembly utasítás és a gépi kód között ezért ha az utasítást írjuk le az pontosan megfelel a szándék szerinti gépi kódnak és így csak mazochisták programoznának gépi kódban. Mindenki inkább az emberek számára jobban értelmezhető assembly parancsokat, mnemonikokat használja. Persze a digitális forradalom elején néhány programot még gépi kódban írtak. 1.3 Miért tanuljunk assembly nyelvet? Az assembly programozás nem annyira népszerű mint néhány éve volt. Ugyanakkor még mindig több oka van annak, hogy megtanuljunk assembly-ben programozni: Tanulás: Fontos tudni hogyan működnek a processzorok és fordítók az utasítás szinten. Ezen ismeretek segítségével meg lehet állapítani mely programozási módok a leghatékonyabbak, illetve, hogy a magasabb szintű programozási szerkezetek hogyan működnek. Debuggolás: Több szempontból is hasznos lehet ha a fordítók által generált kódot meg tudjuk érteni illetve meg tudjuk állapítani, hogy mennyire jó, optimalizált kódot generál egy fordító. Fordítók: Az assembly kód megértése elengedhetetlen ahhoz, hogy fordítót, debugger-t vagy egyéb fejlesztő eszközöket fejlesszünk. Beágyazott rendszerek: A beágyazott rendszereknek nincs annyi erőforrása mint egy hagyományos PC-nek és ezért szükség lehet az assembly nyelvre, hogy ilyen rendszerekre gyors és hatékony kódot írjunk. 4 A magyarázat a 3. fejezetben található. 12
13 Pentium processzor Assembly Művelet Gépi kód (hex) nop Üres művelet 90 inc result Növelés FF060A00 mov result, 45 Másolás C7060C002D00 and mask, 128 Maszkolás 80260E0080 MIPS processzor Assembly Művelet Gépi kód (hex) nop Üres művelet mov $t2, $t15 Másolás 000A2021 and $t2, $t1, 15 Logikai ÉS 312A000F addu $t3, $t1, $t2 Összeadás 012A tábla: Assembly parancsok és a megfelelő gépi kód Hardware eszközök: A magas szintű programozási nyelvek korlátozott (absztrakt) hozzáférést engednek a hardware elemekhez, így a hardware eszközök használatát és elérését biztosító eszközvezérlőt írni magas szintű nyelven nehéz vagy lehetetlen. Ilyen esetben is jól jöhet az assembly nyelv ismerete. Olyan utasításokat is használhatunk assembly-ben aminek a magasabb szintű nyelvekben nincs megfelelője. Méretre való optimalizálás: A méretre való optimalizálás azt jelenti, hogy Program A kevesebb helyet foglal mint Program B de ugyanazt a feladatot látja el. A memória ma már olyan olcsó, hogy tulajdonképpen nem éri meg assembly-ben kódot írni a program méretének csökkentése miatt. Ugyanakkor a cache még midig kis méretű és drága, így az erre optimalizált kód esetén még mindig fontos az assembly nyelv használata. Sebességre való optimalizálás: A sebességre optimalizált program a lehető legrövidebb idő alatt végzi el a feladatot. Habár a modern fordítók viszonylag jól optimalizálják a generált kódot, bizonyos esetekben a kézzel optimalizált assembly program részlet drámaian fel tudja gyorsítani a programot. Az utolsó két szempontból az utóbbi a fontosabb. Egyrészt a hely megtakarítás csak a program kódra vonatkozik és az adatra nem, másrészt a memória méretének növekedése miatt. Assemblyben azért lehet hatékony kódot írni, mivel a nyelv sajátossága, hogy a generált kód csak azt tartalmazza amit beleírtunk, vagyis ami a feladat megoldásához kell. Semmi más, extra információt nem fordít bele az assembler. A sebességre optimalizált alkalmazások két kategóriába sorolhatók: idő hatékony alkalmazások: ezeknél a programoknál a gyorsabb futás jelent előnyt, de nincs különösebb probléma ha a sebesség lassabb; idő kritikus alkalmazások: ebben az esetben a feladatot adott idő alatt kell elvégezni. Általában ezek a valós idejű alkalmazások (real-time systems), például: repülőgép navigációs eszközei, robot kontroll rendszerek, kommunikációs szoftverek. 1.4 Mikor ne használjunk assembly nyelvet? Olyan sok hátránya van az assembly nyelven való programozásnak, hogy mielőtt elkezdenénk programozni assembly-ben más alternatívákat is vegyünk figyelembe. 13
14 1.4.1 A magas szintű programozási nyelvek előnye A magas szintű programozási nyelvek viszonylag kényelmes absztrakciót tesznek lehetővé, hogy az adott problémát megoldjuk. A magas szintű programozási nyelvek előnyei: A programfejlesztés gyorsabb: A magas szintű programozási nyelvekben sokféle programozási konstrukció áll rendelkezésre. Általában rövidebbek is a programok. A programokat könnyebb karbantartani: A magas szintű programozási nyelven írt programokat egyszerűbb megérteni és ezért könnyebb mások által írt programot áttekinteni és megérteni. A programok hordozhatóak: A program nem tartalmaz processzor specifikus részleteket és ezért bármilyen rendszeren használhatóak Az assembly hátrányai Az assembly-ben való programozás ellen szóló legfontosabb érvek: 1. Fejlesztési idő: Az assembly-ben való programozás szinte mindig több időt igényel mint a magasabb szintű programozási nyelv használata. 2. Megbízhatóság és biztonság: Assembly nyelven könnyű hibát véteni. Az assembler csak szintaktikai ellenőrzéseket végez. 3. Debuggolás és ellenőrzés: Az assembly nyelven írt programokban nehezebb hibát keresni, illetve nehezebb ellenőrizni a kódot, hogy az előírt feladatot oldja meg. 4. Karbantartás: Az assembly nyelven írt programokat nehezebb módosítani és karbantartani. A nyelv megengedi a spagetti kód írási technikát és egyéb trükkök is megengedettek a nyelvben, melyeket más nyelven nem lehet megvalósítani. 5. Hordozhatóság: Az assembly kód a hardware platformhoz kapcsolódik, csak az adott processzoron, architektúrán lehet lefuttatni. 6. Modern fordítók: A modern fordítók sokat fejlődtek az elmúlt években és már nagyon jó kódot tudnak generálni és gyakran nehezebb jobb assembly kódot generálni. 1.5 Mielőtt elkezdenénk assembly-ben programozni... Van néhány szempont amit figyelembe kell venni mielőtt egy komplex alkalmazást elkezdenénk assemblyben programozni: Ha az a célunk, hogy egy program sebességét optimalizáljuk, akkor először azonosítsuk, hogy a program mely része fut a legtöbbet a processzoron. Ellenőrizzük, hogy mivel tölti a legtöbb időt a program, például a memória eléréssel, CPU utasítások végrehajtásával, file-ok elérésével vagy valami mással. Döntsük el, hogy a fejlesztett program újrahasznosítható vagy csak egy egyedi alkalmazás. Ha a kódot újra fel akarjuk használni, akkor érdemes több időt tölteni az optimalizálással. El kell dönteni, melyik assemblert használjuk, mivel a különböző assemblerek más-más szintakszist használhatnak. A jelentős mértékben optimalizált kódot nehéz lehet olvasni, így a karbantartás miatt érdemes kisebb egységekbe szervezni a programot melyeknek jól definiált interface-e van és megfelelően van dokumentálva. 5 Itt főleg a forráskódról beszélünk, nem a futtatható, már lefordított gépi kódú programról. 14
15 1.6 Szintakszis Kétféle jelentősebb szintakszis alakult ki az évek során, amiket az assembly programok írásánál használhatunk: AT&T szintakszis Intel szintakszis 1.7 Assemblerek Több assembler is létezik az Intel processzorokra, melyek az x86-os utasítás készletet használják, vagyis a mnemonikokból Intel gépi kódot hoznak létre. Az alábbiakban csak néhányat mutatunk be MASM Ez a Microsoft Assembler, mely a mai napig része a Microsoft fejlesztő környezetének, a Visual Studionak. A program neve: ml.exe. A MASM sokáig a de-facto ipari szabvány volt és több magasabb szintű programozási konstrukciót is tudott kezelni. A formátuma nem teljesen tiszta, vannak inkonzisztens részek benne. Microsoft továbbra is fejleszti, de igazából minimális módon GAS GAS rövidités megfelelője a GNU Assembler, mely a GNU binutils csomag része is. A GNU fordítók olyan formátumot generálnak, melyet ez az assembler képes lefordítani. GAS az úgynevezett AT&T szintakszist használja, bár ma már az Intel szintakszisnak megfelelő kódot is el tud fogadni. Ez az assembler használható Linux, Mac OS X és Windows alatt is TASM Az egyik legnépszerűbb fejlesztői eszközöket a Borland cég készítette. Az általuk készített programfejlesztő családba tartozik a Turbo Assembler is. Sajnos ma már nem fejlesztik, az újabb utasítások nem kerülnek bele, de még mindig elérhető az Interneten. Az assembler által használt szintakszis nagyon hasonló a MASM assembler szintakszisához NASM NASM megfelel a Netwide Assembler névnek és egy szabad forráskodú assembler, mely többféle objektum formátumot képes generálni és így több operációs rendszert támogat (Linux, Windows, Mac OS X, FreeBSD, stb). A szintakszisa tisztább mint a MASM assembler-é, de kevesebb magas szintű programozási konstrukciót képes kezelni Melyik assembler? Ez a jegyzet a NASM assemblert használja két fő ok miatt: Az egyszerű szintakszis nagyon logikus és konzisztens. Windows és Linux rendszeren is használható, melyek manapság a legjobban elterjedt operációs rendszerek. 15
16 1.8 Összefoglalás Az assembly nyelv tanulása mind gyakorlati és pedagógia célokat szolgálhat. Még ha nem is szándékozunk assembly-ben programozni, akkor is érdemes megtanulni, mivel egy nagyon jó alapot ad ahhoz hogy megértsük, hogyan működnek a számítógépek. Amikor magas szintű programozási nyelvet használunk, akkor a rendszert egy fekete dobozként kezeljük. Ezzel szemben assembly programozás esetén a rendszert részleteit is ismerni kell, például a regisztereket. 1.9 Ellenőrző kérdések 1. Soroljon fel különböző processzorokat! 2. Mit jelent a CISC kifejezés és mi jellemző az ilyen processzorokra? 3. Soroljon fel indokokat miért érdemes assembly nyelvet tanulni? 4. Soroljon fel indokokat mikor kell assembly nyelvet tanulni? 5. Soroljon fel indokokat mikor ne használjunk assembly nyelvet? 6. Mi az assembly nyelv és a gépi kód kapcsolata? 7. Magas szintű programozási nyelvben miért nem tudjuk teljes mértékben kontrollálni a hardwaret? 8. Miért hívjuk az assembly programozási nyelvet alacsony szintű nyelvnek és a C programozási nyelvet magas szintűnek? 9. Soroljon fel néhány különbséget a CISC és RISC processzorok között? 10. Hasonlítsa össze a két féle assembly szintakszist! 11. Soroljon fel assemblereket! 12. Miért lehet szükség az assembly használatára idő kritikus alkalmazások esetén? 13. Soroljon fel idő kritikus alkalmazásokat! 16
17 2. Fejezet A számítógép felépítése A számítógépnek alapvetően három fő komponense van: a központi egység vagy processzor (CPU), a memória, és az Input/Output eszközök. Lásd a 2.1. ábra. A részek közötti kapcsolatot a rendszer busz biztosítja. A memória tárolja a programokat és az adatokat is egyszerre. Az Input/Output eszközök lehetnek a billentyűzet, a képernyő és így tovább. A 2.2. ábra egy részletesebb nézetét adja a számítógépnek, ahol jól látható hogy a rendszer busz három részből áll: cím busz, adat busz és kontroll busz. A cím busz szélessége határozza meg az elérhető memória kapacitást, illetve az adat busz adja meg, hogy milyen méretű adatok mozoghatnak a CPU, a memória és az I/O eszközök között. Például a 8086-os processzornak 20 bites a cím busza és 16 bites az adat busza. Ezek alapján a processzor 2 20 byte-ot tud megcímezni, vagyis 1 MByte-ot és minden alkalommal 16 bit mozog az egységek között. A Pentium processzoroknak 32 cím vonaluk van a cím buszban és 64 adat vonala. Így a Pentium 4 GByte memóriát tud megcímezni. A 2.2. ábrán az is fontos, hogy a buszok milyen irányba képesek adatot küldeni. Látható, hogy a CPU a kontroll buszon keresztül ad utasításokat a memóriának és az I/O alrendszernek, adatot viszont az adat buszon keresztül fogad. A kontroll buszon kiadható jelek: memória olvasás, memória írás, I/O olvasás, I/O írás, megszakítás és így tovább. 2.1 A processzor A processzor kontrollálja a legtöbb tevékenységet a rendszerben. Úgy érdemes rá gondolni, hogy a következő ciklust hajtja végre: 1. Egy utasítás betöltése a memóriából (fetch), 2. Az utasítás dekódolása, azonosítása (decode), CPU Memória Kapcsolat Input/Output 2.1. ábra: Absztrakt értelmezése a számítógépnek 17
18 CPU Memória Cím busz Adat busz Kontroll busz I/O alrendszer 2.2. ábra: Egy számítógép egyszerűsített diagramja 3. Az utasítás végrehajtása (execute). Ez a végrehajtási ciklus, vagy fetch-decode-execute ciklus Végrehajtási ciklus Fetch Decode Execute A processzor a betöltendő utasítás címét felrakja a cím buszra. A processzor a kontroll buszon keresztül memória olvasásra ad utasítást a memória egységnek. A processzor addig vár amíg az utasítás meg nem jelenik az adat buszon. A memória egységnek idő kell míg hozzáfér a szükséges részhez. Ez a hozzáférési idő. A memória a beolvasott utasítást az adat buszra helyezi. A processzor beolvassa az adat buszról az utasítást Azonosítani kell a beolvasott utasítást. Ezt segítendő az utasítások bizonyos kódolási mintát követnek, melyet majd a 7. fejezetben tárgyalunk. A végrehajtáshoz két egységre van szükség: egy kontrol és egy aritmetikai (ALU) egységre. A kontroll egység segít az időzítésben, míg az ALU egység a matematikai számításokat végzi el. Megjegyezzük, hogy az adatok és az utasítások nem mindig közvetlenül a memóriából jönnek, hanem az úgynevezett cache-ből. A cache memóriához való hozzáférés gyorsabb. A Pentium processzoron 16 KB-os cache van a chipen, melynek fele adat és fele utasítás cache. Szerencsére a cache használata hardware-ben van megoldva és teljesen transzparens a programozó számára. 18
19 2.1.2 A rendszer óra A rendszer óra a system clock. A rendszer óra teszi lehetővé, hogy a műveleteket összeszinkronizáljuk. Az órajel 1-eseket és 0-kat ad ki sorozatban, szekvenciában. Az óra frekvencia értékét a másodpercenkénti ciklusok száma adja meg és a mértékegysége Hertz (Hz). A MHz és GHz 10 6 és 10 9 ciklust jelent másodpercenként. 1 óra frekvencia = (2.1) óra ciklus hossza A rendszer óra adja meg a számítógép sebességét. Minden processzor művelet végrehajtása több órajel ciklust igényel. Például egy 1 GHz-es Pentium processzoron egy adat továbbítása a memóriából a processzorra három órajel ciklust igényel. Egy óra ciklus hossza: és így az adattovábbításhoz 3 ns-ra van szükség. 1 = 1ns (2.2) A számítógépek sebességét növelhetjük úgy, hogy nagyobb órajel frekvenciát használunk. Például egy 2 GHz-es processzoron az adat továbbítás már csak 1.5 ns-ig fog tartani. 2.2 Címzési architektúra Érdekes módon az egyik legfontosabb tulajdonsága egy architektúrának hogy hány címet használunk az utasításokban. A legtöbb művelethez egy vagy két argumentumra van szükség. Ezek alapján szokták a műveleteket binary és unary műveleteknek nevezni, ahol a a bi- kettőt, az un- egyet jelent. Unary művelet például a tagadás (NOT) művelet, míg binary művelet az összeadás és a kivonás. Ezek a műveletek egy eredményt adnak. Természetesen vannak kivételek, például az osztás. Az osztásnál két argumentumra van szükség, az osztandóra és az osztóra, viszont két eredmény is keletkezik: az eredmény és a maradék. Mivel a binary műveletek a leggyakoribbak és ebben az esetben két input argumentumra és egy eredmény, output argumentumra van szükség ezért ezért általában három címre van szükség egy utasításnál. Ebben a részben azt nézzük meg, hogyan lehet három, kettő, egy és zérus címet használni az utasításokkal Három címes architektúra A három címet használó utasításkészlettel rendelkező processzoroknál a két input argumentumot és az egyetlen output argumentumot tudjuk megadni. A legtöbb modern processzor ilyen utasításkészletet használ. Nézzünk egy példát: A = B + C * D - E + F + A mely pszeudo assembly-ben a következőképpen néz ki: mult T,C,D ; T = C * D add T,T,B ; T = B + C * D sub T,T,E ; T = B + C * D - E add T,T,F ; T = B + C * D - E + F add A,A,T ; A = B + C * D - E + F + A A példában az látható, hogy matematikai műveletre egy utasítást kell megadni. Ami szintén szembetűnő, hogy az első utasítást kivéve az első két argumentum azonos. Mivel az esetek jelentős részében így van, ezért a sok duplikáció elkerülése végett két-címes utasításkészleteket is szoktak implementálni processzorokban. 19
20 2.2.2 Két címes architektúra Ebben az esetben az utasításoknak csak cím argumentuma van és az egyik cím inputként és outputként is szolgál. Az Intel processzorok, például a Pentium is ilyen utasításokat használ. Nézzük az előző példát újra: A = B + C * D - E + F + A mely pszeudo assembly-ben a következőképpen néz ki: load T,C ; T = C mult T,D ; T = C * D add T,B ; T = B + C * D sub T,E ; T = B + C * D - E add T,F ; T = B + C * D - E + F add A,T ; A = B + C * D - E + F + A Mivel csak két argumentum áll rendelkezésre ezért az első utasítással betöltjük az adatot T-be. Ebben az esetben az a feltűnő, hogy az első 6 utasításban a T argumentum közös. Ha ez lesz az alap eset, akkor már csak egy cím, argumentum kell az utasításokhoz Egy címes architektúra Ha a memória drága vagy lassú akkor egy speciális regisztert használ a processzor. Ez a regiszter szolgáltatja az input és az output argumentumot egy utasításnak. Ezt a regisztert akkumulátor regiszternek is szokták nevezni, mivel benne gyűlik össze, akkumulálódik, az eredmény. A legtöbb arhitektúra esetén csak egy akkumulátor regiszter van. Ezt a regisztert nem kell megadni az utasításnak csak a másik argumentumot Zéró cím architektúra Arra is van lehetőség, hogy mindkét argumentum speciális helyen tárolódik és így nem kell megadni őket az utasításoknál. Ezek a processzorok egy vermet használnak. Az argumentumok a verem tetején vannak amiket az utasítás levesz onnan, majd az eredményt is a verem tetejére teszi vissza Load/Store architektúra Ebben az esetben a műveleteket a processzor belső regiszterein végezhetjük el és külön utasítással kell beolvasni az adatokat a memóriából a regiszterekbe, illetve a regiszterekből kiírni a memóriába. A fenti példa a következőképpen módosul: A = B + C * D - E + F + A mely pszeudo assembly-ben a következőképpen néz ki: load R1,B load R2,C load R3,D load R4,E load R5,F load R6,A mult R2,R2,R3 ; R2 = C * D add R2,R2,R1 ; R2 = B + C * D 20
21 sub R2,R2,R4 ; R2 = B + C * D - E add R2,R2,R5 ; R2 = B + C * D - E + F add R2,R2,R6 ; R2 = B + C * D - E + F + A store A,R2 A fenti példában hat regisztert is használunk. Bár nincs ennyire szükség, de ez általában jellemző ezekre az architektúrákra, hogy sok regiszterük van. A RISC processzoroknak több regiszterük van mint a CISC processzoroknak. A MIPS processzornak 32 regisztere van, az Intel Itanium processzornak 128 regisztere és az Intel Pentium processzornak csak 10 regisztere van. 2.3 Regiszterek Minden processzorban vannak regiszterek, melyeket két fő csoportba sorolhatunk: általános célú regiszterek, speciális célú regiszterek. A speciális célú regisztereket további két csoportba oszthatjuk: felhasználó által elérhető regiszterek és csak a rendszer által elérhető regiszterek. A Pentium regisztereit a 3. fejezetben tárgyaljuk. 2.4 Végrehajtási sorrend A program végrehajtása általában szekvenciálisan történik, az utasításokat egymás után hajtjuk végre. Az egyik regiszter, a Program Counter (PC) vagy Instructon Pointer (IP) regiszter, fontos szerept játszik a végrehajtási sorrend kezelésében. A processzor mindig azt az utasítást tölti be (fetch) amire a PC regiszter mutat. A betöltés után a PC regiszter értékét megnöveljük, hogy a következő utasításra mutasson. Ez a megnövelés lehet fix méretű, például a RISC processzoroknál, vagy változó méretű a CISC processzoroknál, ahogy ez látható a 1.1. A CISC processzorok esetén minden utasításnál külön meg kell állapítani, hogy mennyivel növeljük meg a PC regiszter értékét. A magasabb szintű programozási nyelvekben ugyanakkor vannak feltételes végrehajtási és ciklikus programozási konstrukciók, melyek a végrehajtási sorrendet változtatják meg valamilyen futás közbeni feltételtől függően. Ezek megvalósítása a processzorokban speciális módon történik Branching A branching szó fordítása talán az elágazás lehet. Arról van szó, hogy az eredeti szekvenciát megszakítva, máshol folytatódik a program végrehajtása. Két változata van: a feltétel nélküli és feltételes ugró utasítás. Ezeknek az utasításoknak egy argumentuma van, mely explicit módon megadja az új utasítás címét. Ez azt jelenti, hogy amikor máshol kell folytatni a végrehajtást, akkor a PC regiszterbe az új címet töltjük be és így a következő fetch -nél már ezt a címet fogja használni a processzor. A végrehajtási sorrend a feltétel nélküli ugró utasítás esetén a 2.3. ábrán látható. Feltételes ugrás A feltételes ugrás esetén az új cím csak akkor töltődik be a PC regiszterbe, ha valamilyen feltétel teljesül. Kétféle módon szokták ezt megadni a különböző processzorokban: Set-Then-Jump : Az ilyen architektúrájú processzorokban a vizsgálat és az ugrás szét van választva. A két, különálló rész közötti kapcsolatot egy regiszter biztosítja. A vizsgálat beállítja a regiszter értékét, majd az ugró utasítás ezt a regisztert vizsgálja meg hogy bekövetkezzen-e az ugrás vagy sem. A Pentium processzorok ezt a technikát használják. 21
22 utasítás jump utasítás a cím b utasítás utasítás c d 2.3. ábra: Ugró utasítás Test-And-Jump : A legtöbb processzor összekombinálja a két részt, például a MIPS processzorok. Például: beq Rsrc1, Rsrc2, célcím összehasonlítja az Rsrc1 és Rsrc2 regiszterek tartalmát és ha egyenlőek, akkor a célcím-nél folytatódik a végrehajtás. 2.5 Memória A számítógép memóriáját úgy érdemes elképzelni mint sok elektronikus kapcsoló összessége. Ezek a kapcsolók két állapotban lehetnek: nyitott vagy zárt állapotban. Ugyanakkor ezeket az állapotokat érdemesebb 1 és 0 állapottal jellemezni. Így minden kapcsolót reprezentálni lehet egy bináris számmal vagy bittel. A memória millió szám tartalmaz biteket. A jobb kezelhetőség miatt a memória a biteket csoportokba szervezik. 8 bit csoportja egy byte. Így a memória mint egy byte sorozat képzelhető el. Minden byte-ra egy index számmal lehet hivatkozni. Az első index értéke 0. Az utolsó index értéke 2 n 1, ahol az n az adatbusz szélessége (hány bites). A memória sematikus képe a 2.4. ábrán látható Memória műveletek Két alapvető művelet van: adat olvasás a memóriából és adat írás a memóriába. Mindkét esetben szükség van egy memória címre ahonnan olvashatunk, vagy ahova írhatunk. Ezenkívűl az írási művelet még egy adatot is igényel Olvasási ciklus 1. A processor elhelyezi az olvasandó adat címét a cím buszon. 2. A kontroll buszon a processzor kiadja a memória olvasási jelet. 3. A processzor várakozik amíg az olvasás megtörténik és az adat megjelenik az adat buszon. 4. A processzor beolvassa az adatot az adat buszról. 22
23 FFFF FFFF FFFF FFFE ábra: A memória sematikus képe 5. A kontroll buszon jelzi a processzor, hogy véget ért az olvasás. Egy Pentium processzor olvasási ciklusa három órajel ciklusnak felel meg. Az első órajel ciklus alatt az 1. és 2. lépés hajtódik végre. A második órajel ciklus alatt a processzor várakozik. A harmadik órajel ciklus alatt az utolsó két lépés fut le. Ha a memóriának mégsem sikerül az olvasás, akkor ezt jelzi a processzornak ami egy újabb órajel ciklusig vár Olvasási ciklus 1. A processzor elhelyezi az írandó adat címét a cím buszon. 2. A processzor elhelyezi az adatot az adat buszra. 3. A kontroll buszon a processzor kiadja a memória írási jelet. 4. A processzor várakozik amíg az írás megtörténik. 5. A kontroll buszon jelezzük az írás végét. A Pentium processzor írási cíklusa is három órajel ciklust igényel. Az 1. és 3. lépés az első órajel alatt következik be. A 2. lépés csak a második órajel ciklus alatt történik. A második órajel ciklus végén jelzi az írás végét Memória típusok A memóriákat különböző kategóriákba lehet csoportosítani. Az egyik legfontosabb tulajdonsága a memóriáknak, hogy csak olvashatók vagy írhatók-olvashatók. Szintén fontos tulajdonság, hogy a memória minden részének elérése azonos időben lehetséges (random-access) vagy csak szekvenciálisan. A szekvenciális elérés magyarázatához a legjobb példa egy kazetta, amikor is addig kell olvasni a kazettát, amíg el nem értük a keresett adatot. Végül vannak a volatile memóriák, melyeknél amíg feszültség alatt van az egység csak addig őrzi meg a tartalmat. A nonvolatile memória akkor is megőrzi a tartalmát ha nincs feszültség alatt az egység. Csak olvasható memóriák A csak olvasható memóriák (Read Only Memory vagy ROM) csak olvasási műveletet enged. Ebbe a memóriába nem tudunk írni. A fő előnyük, hogy egyben nonvolatile memóriák is. A ROM memóriák 23
24 tartalmát a gyárban égetik bele. Ezeket a memóriákat olcsó gyártani. A régebbi számítógépekben a BIOS általában ROM. Vannak úgynevezett programozható ROM-ok is (PROM), illetve törölhető (erasbale) PROM-ok (EPROM). Írható-olvasható memóriák Az írható-olvasható memóriákat általában RAM-nak (random access memory-nak) is szokták nevezni, habár a ROM-ok esetén is igaz az, hogy minden része azonos időben érhető el. Ezeket a memóriákat két csoportba lehet sorolni: statikus és dinamikus. A statikus RAM memóriák (SRAM) megőrzi az adatot a beírás után, minden további menipuláció nélkül, amíg a rendszer feszültség alatt van. Ilyen memória a cache vagy a regiszterek. Ezzel szemben a fő memória dinamikus (DRAM). A DRAM egy komplex eszköz, mely kondenzátorok segítségével tárol egy bitet. A feltöltött kondenzátor jelöli az 1-es értéket. Mivel a kondenzátorok idővel vesztenek a töltésükből ezért időközönként frissíteni kell. Tipikusan 64 ms a frissítési periódus. Az olvasás során azt teszteljük, hogy a kondenzátor fel van-e töltve. Ugyanakkor ez a tesztelés tönkre is teszi a töltést. Ebben az értelemben a DRAM egy speciális memória, mivel az olvasás is destruktív, nem csak az írás. A legtöbb memória esetén csak az írás destruktív. A destruktív olvasás következménye, hogy az olvasás után egy helyreállítási ciklus szükséges. Ennek az a következménye, hogy az olvasás kétszer olyan sokáig tart mint más memóriák esetén. Modern memória típusok: FPM DRAM: Fast page-mode DRAM EDO DRAM: Extended Data Output DRAM SDRAM: synchronous DRAM DDR SDRAM RDRAM: Rambus DRAM Byte sorozatok tárolása Természetesen általában nem csak egy byte-ot kell tárolni, hanem több byte-ot is. Például egy egész számot a C programozási nyelvben általában 4 byte-on tárolunk. Felmerülhet a kérdés, hogy hogyan tároljuk ezt a 4 byte-ot a memóriában? A 2.5. ábra két megoldást is mutat. Az ábrán az MSB jelölés a Most Significant Byte -nek felel meg, míg az LSB a Least Significant Byte. Mindkét megoldás esetén a 100-as címet adtuk meg, és ehhez képest történik a tárolás. A Little-endian tárolási módban a legkisebb helyiértékű byte (LSB) tárolódik először. Ezzel szemben a Big-endian tárolási módban a legnagyobb helyiértékű byte (MSB) tárolódik legelőször. Nézzünk egy másik példát a Little-endian tárolási módra. Az 1234h hexadecimális szám esetén először a 34h, majd a 12h byte-ot tárolja a rendszer. Az h szám esetén a tárolási sorrend: 78h, 56h, 34h, 12h. Melyik tárolási módszer a jobb? Mindkettő ugyanolyan jó. Csak a processzor tervező döntése, hogy melyiket használja. A Pentium processzorok a Little-endian tárolási módot használják. A MIPS és PowerPC processzorokon a Big-endian tárolási mód az alapértelmezett, de át lehet konfigurálni őket Little-endian tárolási módra is. Általában a különböző tárolási mód nem okoz problémát, ha mindig csak egyféle processzort használunk. Az igazi problémák akkor jelennek meg, ha különböző tárolási módszert használó processzorok között akarunk egy programot hordozni. Ebben az esetben az adatokat konvertálni kell! 24
25 MSB LSB cím cím Little-endian Big-endian 2.5. ábra: Little-endian és Big-endian tárolási mód Adat alignment problema Egy program végrehajtási sebességét több tényező is befolyásolja. A tényezők közül néhány a programozó befolyása alatt van, míg másokat nem tudnak befolyásolni. Ebben a fejezetben az egyik fontos tényezőt vizsgáljuk meg. Tegyük fel, hogy egy 32 bites adatot szeretnénk olvasni a memóriából. Azt is tegyük fel, hogy az adat busz szintén 32 bites. Ha az olvasni kívánt adat címe néggyel osztható, akkor a memóriában pont úgy van elhelyezve, hogy egy sorba esik. Ez látható a 2.6. ábrán és ezt szoktuk illesztett, aligned adatnak nevezni. Mivel az adatbusz 32 bites, ezért egyszerre 4 byte-ot, egy sort lehet beolvasni a memóriából. Ez azt jelenti, hogy ha a cím nem osztható néggyel, akkor az adat két sorba kerül és kétszer kell olvasni a memóriából, majd ezekből fogja a processzor összeállítani a szükséges 32 bites adatot. A kétszeri olvasásnak hatása van a program futására, mivel a nem illesztett adatok miatt lassabban fog futni! n+3 k n+2 k n+1 k 0-7 n+0 k+3 CPU adatbusz 32 bit memória adat1 adat ábra: Adat illesztés - data alignment Az adat illesztés problémája teljesen transzparans módon, vagyis nem jelenik meg a felhasználó számára, kivéve, hogy a program lassabban fut. A 16 bites adatokat 2 byte-ra kell illeszteni. Ez azt 25
26 Cím busz Adat busz Kontroll busz Adat Státusz Parancs I/O kontroller I/O eszköz 2.7. ábra: Input/Output eszköz sematikus ábrája jelenti, hogy a cím legkisebb helyiértékű bite zérus, vagyis a cím páros. A 32 bites adatokat 4 byte-ra kell illeszteni vagyis a cím két legkisebb helyiértékű bite zérus. És így tovább. A Pentium processzorok megengedik az illesztett ( aligned ) és nem illesztett adattárolást is. Bizonyos processzorok az előbb leírt hatékonysági probléma miatt nem engedik meg, hogy az adat ne legyen illeszteve. 2.6 Input/Output Az Input/Output eszközök teszik lehetővé, hogy a számítógépek kommunikáljanak a külvilággal. Input/Output eszköz lehet hogy csak adatszolgáltatásra alkalmas, input-ra, például az egér, vagy csak output-ra képes, például a monitor, vagy input-ra és output-ra is képes. Így lényegében az I/O eszközöknek két fő célja van, a külvilággal kommunikálni és adatot tárolni. Mindegyik kommunikáció a rendszer buszon keresztül történik, bár az I/O eszközök nem közvetlenül kapcsolódnak a buszhoz, hanem van egy I/O kontroller az eszköz és a rendszer busz között, ahogy ez 2.7. ábrán látható. Két fontos ok miatt van szükség ezekre az I/O kontrollerekre: 1. A különböző I/O eszközöket különböző módon kell kezelni. Ez azt jelenti, hogy a különböző eszközökkel különböző módon kell kommunikálni, néha várni kell az adat megérkezésére vagy vezérlő jeleket kell adni. Ha a processzornak kellen mind ezt a feladatot ellátni, akkor több időt töltene ezzel, mint a felhasználó kiszolgálásával, vagyis a programok futtatásával. Az I/O eszköz kontroller elvégzi a processzor helyett ezeket a feladatokat. 2. A másik ok, hogy a rendszer buszon keresztül küldött elektromos jel igen alacsony, ami azt is jelenti, hogy a rendszer busz nem lehet túl hosszú. Emiatt az I/O eszköz kontrollerek közel vannak a processzorhoz, például a számítógép házban, és majd a kontroller tud külön, erősebb jelet küldeni az eszköznek. Az 2.7. ábra azt is mutatja, hogy az I/O eszköz kontrollerekben általában három regiszter is van. Például egy nyomtató esetén a Státusz regiszter jelzi, hogy az eszköz készen áll-e, az Adat regiszterbe kell tenni a nyomtatandó karaktert és a Parancs regiszterben kell utasítást adni az eszköznek, hogy nyomtassa ki a karaktert. A processzor I/O portokon keresztül éri el ezekete a regisztereket. Az I/O port nem más mint az I/O eszközön levő regiszter címe. Az I/O portok lehetnek a memóriára illesztettek, memory-mapped I/O. Ilyen rendszer például a MIPS processzorban van. A Pentium processzorok egy I/O cím tartományt használnak. Ez a cím tartomány különbözik a memória cím tartományától. Ebben az esetben külön I/O utasításokat kell használni. Ugyanakkor ez az utóbbi technika a memóriára illesztett I/O-t is lehető teszi. Később látni fogjuk, hogy például a képernyő a memóriára illeszthető és úgy is írhatunk a képernyőre, hogy egy speciális memória területre írunk. Ezzel szemben a billentyűzettel lehet I/O utasításokkal is kommunikálni. 26
27 2.6.1 I/O eszközök elérése Amikor assembly-ben programozunk közvetlenül vezérelhetjük az I/O eszközöket. Bár erre lehetőségünk van, de leírások és segítség nélkül gyakran nagyon bonyolult lehet, illetve minden esetben saját input és output függvényeket kellene kifejlesztenünk. Ezenkívül, ha mindenkinek teljesen szabad hozzáférése van az I/O eszközökhöz, akkor rosszindulatú emberek ezt ki is használhatják. Ezért van az, hogy általában az operációs rendszer kontrollálja az eszközökhöz való hozzáférést, illetve biztosítja a rutinokat is amiket használhatunk. A rutinok általában valamilyen megszakítást használnak. A megszakításokat a 8.2. bekezdésben tárgyaljuk. 2.7 Összefoglalás Ebben a fejezetben a számítógép alapvető elemeit ismertük meg olyan mélységben amire szükségünk lehet az assembly programozás során. Ezek az ismeretek lehetnek újak, illetve bizonyos fogalmak előfordulhattak más tárgyak keretében. 2.8 Ellenőrző kérdések 1. Milyen részekből áll egy sematikus számítógép? 2. Mi a fetch-decode-execute ciklus? Melyik lépésben, mi történik? 3. A rendszer busz milyen fő részekből áll? Melyiknek mi a szerepe? 4. Ha a processzornak 64 cím vonala van, mekkora lehet maximálisan a memória mérete? Mi az utolsó byte címe? 5. Mi határozza meg, hogy a memória és a processzor között adatok mérete mekkora? 6. Egy 2GH-es processzorban mekkora egy óra jel ciklus? 7. Miben különbözik a load/store architektúra a többi architektúrától? 8. Adjon magyarázatot arra hogy a RISC processzorokon az utasítások egymás utáni végrehajtása miért lehet gyorsabb mint a CISC processzorokon! 9. Mit jelent a három címes architektúra? 10. Miben különbözik a három és két címes architektúra? 11. Hogyan lehet olyan architektúrát megvalósítani, amelyikben az utasításoknak nem kell argumentumot megadni? 12. Adja meg a következő matematikai műveleteket pszeudo assembly-ben két címes architektúra esetén: E = A * B + C - D 13. A RISC vagy a CISC processzorokra jellemző a nagy számú regiszter? Melyik címzési architektúra esetén van szükség erre a nagyszámú regiszterre? 14. A Pentium processzor a RISC vagy CISC processzorok családjába tartozik? 15. A MIPS processzor a RISC vagy CISC processzorok családjába tartozik? 16. Hogyan lehet megvalósítani a feltételes ugró utasítást különböző architektúrákon? 17. Mi a PC regiszter szerepe a feltételes ugró utasítás végrehajtása során? 27
Assembly programozás. szerkesztette: Iványi Péter. September 22, 2009
Assembly programozás szerkesztette: Iványi Péter September 22, 2009 2 Tartalomjegyzék 1 Bevezetés 9 1.1 Assembly elsőre...................................... 9 1.2 Miért tanuljunk assembly nyelvet?............................
RészletesebbenAssembly utasítások listája
Assembly utasítások listája Bevezetés: Ebben a segédanyagban a fontosabb assembly utasításokat szedtem össze. Az utasítások csoportosítva vannak. A fontos kategóriába azok az utasítások tartoznak, amiknek
RészletesebbenSzámítógépek felépítése, alapfogalmak
2. előadás Számítógépek felépítése, alapfogalmak Lovas Szilárd, Krankovits Melinda SZE MTK MSZT kmelinda@sze.hu B607 szoba Nem reprezentatív felmérés kinek van ilyen számítógépe? 2 Nem reprezentatív felmérés
RészletesebbenSzámítógépek felépítése
Számítógépek felépítése Emil Vatai 2014-2015 Emil Vatai Számítógépek felépítése 2014-2015 1 / 14 Outline 1 Alap fogalmak Bit, Byte, Word 2 Számítógép részei A processzor részei Processzor architektúrák
RészletesebbenDigitális rendszerek. Utasításarchitektúra szintje
Digitális rendszerek Utasításarchitektúra szintje Utasításarchitektúra Jellemzők Mikroarchitektúra és az operációs rendszer közötti réteg Eredetileg ez jelent meg először Sokszor az assembly nyelvvel keverik
RészletesebbenSzámítógépek felépítése, alapfogalmak
2. előadás Számítógépek felépítése, alapfogalmak Lovas Szilárd SZE MTK MSZT lovas.szilard@sze.hu B607 szoba Nem reprezentatív felmérés kinek van ilyen számítógépe? Nem reprezentatív felmérés kinek van
RészletesebbenAssembly. Iványi Péter
Assembly Iványi Péter További Op. rsz. funkcionalitások PSP címének lekérdezése mov ah, 62h int 21h Eredmény: BX = PSP szegmens címe További Op. rsz. funkcionalitások Paraméterek kimásolása mov di, parameter
RészletesebbenSzámítógép felépítése
Alaplap, processzor Számítógép felépítése Az alaplap A számítógép teljesítményét alapvetően a CPU és belső busz sebessége (a belső kommunikáció sebessége), a memória mérete és típusa, a merevlemez sebessége
Részletesebbenelektronikus adattárolást memóriacím
MEMÓRIA Feladata A memória elektronikus adattárolást valósít meg. A számítógép csak olyan műveletek elvégzésére és csak olyan adatok feldolgozására képes, melyek a memóriájában vannak. Az információ tárolása
RészletesebbenSZÁMÍTÓGÉPEK BELSŐ FELÉPÍTÉSE - 1
INFORMATIKAI RENDSZEREK ALAPJAI (INFORMATIKA I.) 1 NEUMANN ARCHITEKTÚRÁJÚ GÉPEK MŰKÖDÉSE SZÁMÍTÓGÉPEK BELSŐ FELÉPÍTÉSE - 1 Ebben a feladatban a következőket fogjuk áttekinteni: Neumann rendszerű számítógép
RészletesebbenAssembly Utasítások, programok. Iványi Péter
Assembly Utasítások, programok Iványi Péter Assembly programozás Egyszerű logikán alapul Egy utasítás CSAK egy dolgot csinál Magas szintű nyelven: x = 5 * z + y; /* 3 darab művelet */ Assembly: Szorozzuk
Részletesebben1. Az utasítás beolvasása a processzorba
A MIKROPROCESSZOR A mikroprocesszor olyan nagy bonyolultságú félvezető eszköz, amely a digitális számítógép központi egységének a feladatait végzi el. Dekódolja az uatasításokat, vezérli a műveletek elvégzéséhez
RészletesebbenIsmerkedjünk tovább a számítógéppel. Alaplap és a processzeor
Ismerkedjünk tovább a számítógéppel Alaplap és a processzeor Neumann-elvű számítógépek főbb egységei A részek feladatai: Központi egység: Feladata a számítógép vezérlése, és a számítások elvégzése. Operatív
RészletesebbenA számok kiírása is alapvetően karakterek kiírásán alapul, azonban figyelembe kell venni, hogy a számjegyeket, mint karaktereket kell kiírni.
Példák számok kiírására A számok kiírása is alapvetően karakterek kiírásán alapul, azonban figyelembe kell venni, hogy a számjegyeket, mint karaktereket kell kiírni. Decimális számok kiírása Az alábbi
RészletesebbenA regiszterek az assembly programozás változói. A processzor az egyes mőveleteket kizárólag regiszterek közremőködésével tudja végrehajtani.
1. Regiszterek A regiszterek az assembly programozás változói. A processzor az egyes mőveleteket kizárólag regiszterek közremőködésével tudja végrehajtani. Általános célú regiszterek AX akkumulátor: aritmetikai
RészletesebbenDigitális technika VIMIAA01 9. hét Fehér Béla BME MIT
BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT Eddig Tetszőleges
RészletesebbenDigitális technika VIMIAA01 9. hét
BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT Eddig Tetszőleges
RészletesebbenBevezetés az informatikába
Bevezetés az informatikába 3. előadás Dr. Istenes Zoltán Eötvös Loránd Tudományegyetem Informatikai Kar Programozáselmélet és Szoftvertechnológiai Tanszék Matematikus BSc - I. félév / 2008 / Budapest Dr.
RészletesebbenBalaton Marcell Balázs. Assembly jegyzet. Az Assembly egy alacsony szintű nyelv, mely a gépi kódú programozás egyszerűsítésére született.
Balaton Marcell Balázs Assembly jegyzet Az Assembly egy alacsony szintű nyelv, mely a gépi kódú programozás egyszerűsítésére született. 1. Regiszterek Regiszterek fajtái a. Szegmensregiszterek cs (code):
RészletesebbenA számítógép egységei
A számítógép egységei A számítógépes rendszer két alapvető részből áll: Hardver (a fizikai eszközök összessége) Szoftver (a fizikai eszközöket működtető programok összessége) 1.) Hardver a) Alaplap: Kommunikációt
RészletesebbenMemóriák - tárak. Memória. Kapacitás Ár. Sebesség. Háttértár. (felejtő) (nem felejtő)
Memóriák (felejtő) Memória Kapacitás Ár Sebesség Memóriák - tárak Háttértár (nem felejtő) Memória Vezérlő egység Központi memória Aritmetikai Logikai Egység (ALU) Regiszterek Programok Adatok Ez nélkül
RészletesebbenOperandus típusok Bevezetés: Az utasítás-feldolgozás menete
Operandus típusok Bevezetés: Az utasítás-feldolgozás menete Egy gépi kódú utasítás általános formája: MK Címrész MK = műveleti kód Mit? Mivel? Az utasítás-feldolgozás általános folyamatábrája: Megszakítás?
RészletesebbenInformatika érettségi vizsga
Informatika 11/L/BJ Informatika érettségi vizsga ÍRÁSBELI GYAKORLATI VIZSGA (180 PERC - 120 PONT) SZÓBELI SZÓBELI VIZSGA (30 PERC FELKÉSZÜLÉS 10 PERC FELELET - 30 PONT) Szövegszerkesztés (40 pont) Prezentáció-készítés
Részletesebben5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix
2. Adattípusonként különböző regisztertér Célja: az adatfeldolgozás gyorsítása - különös tekintettel a lebegőpontos adatábrázolásra. Szorzás esetén karakterisztika összeadódik, mantissza összeszorzódik.
RészletesebbenAdatok ábrázolása, adattípusok
Adatok ábrázolása, adattípusok Összefoglalás Adatok ábrázolása, adattípusok Számítógépes rendszerek működés: információfeldolgozás IPO: input-process-output modell információ tárolása adatok formájában
RészletesebbenAdatszerkezetek Tömb, sor, verem. Dr. Iványi Péter
Adatszerkezetek Tömb, sor, verem Dr. Iványi Péter 1 Adat Adat minden, amit a számítógépünkben tárolunk és a külvilágból jön Az adatnak két fontos tulajdonsága van: Értéke Típusa 2 Adat típusa Az adatot
Részletesebben5. tétel. A számítógép sematikus felépítése. (Ábra, buszok, CPU, Memória, IT, DMA, Periféria vezérlő)
5. tétel 12a.05. A számítógép sematikus felépítése (Ábra, buszok, CPU, Memória, IT, DMA, Periféria vezérlő) Készítette: Bandur Ádám és Antal Dominik Tartalomjegyzék I. Neumann János ajánlása II. A számítógép
RészletesebbenBepillantás a gépházba
Bepillantás a gépházba Neumann-elvű számítógépek főbb egységei A részek feladatai: Központi egység: Feladata a számítógép vezérlése, és a számítások elvégzése. Operatív memória: A számítógép bekapcsolt
Részletesebben8. Fejezet Processzor (CPU) és memória: tervezés, implementáció, modern megoldások
8. Fejezet Processzor (CPU) és memória: The Architecture of Computer Hardware and Systems Software: An Information Technology Approach 3rd Edition, Irv Englander John Wiley and Sons 2003 Wilson Wong, Bentley
RészletesebbenRekurzió. Dr. Iványi Péter
Rekurzió Dr. Iványi Péter 1 Függvényhívás void f3(int a3) { printf( %d,a3); } void f2(int a2) { f3(a2); a2 = (a2+1); } void f1() { int a1 = 1; int b1; b1 = f2(a1); } 2 Függvényhívás void f3(int a3) { printf(
RészletesebbenGPU Lab. 4. fejezet. Fordítók felépítése. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc
4. fejezet Fordítók felépítése Grafikus Processzorok Tudományos Célú Programozása Fordítók Kézzel assembly kódot írni nem érdemes, mert: Egyszerűen nem skálázik nagy problémákhoz arányosan sok kódot kell
RészletesebbenAssembly programozás levelező tagozat
Assembly programozás levelező tagozat Szegedi Tudományegyetem Képfeldolgozás és Számítógépes Grafika Tanszék 2011-2012-2 Tematika Assembly nyelvi szint. Az Intel 8086/88 regiszter készlete, társzervezése,
RészletesebbenKinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések. 1. Mi a programozás?
Bevezetés Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések Forráskód Hibajegyzék p2p.wrox.com xiii xiii xiv xiv xvi xvii xviii
RészletesebbenA processzor hajtja végre a műveleteket. összeadás, szorzás, logikai műveletek (és, vagy, nem)
65-67 A processzor hajtja végre a műveleteket. összeadás, szorzás, logikai műveletek (és, vagy, nem) Két fő része: a vezérlőegység, ami a memóriában tárolt program dekódolását és végrehajtását végzi, az
Részletesebben8. Fejezet Processzor (CPU) és memória: tervezés, implementáció, modern megoldások
8. Fejezet Processzor (CPU) és memória: The Architecture of Computer Hardware and Systems Software: An Information Technology Approach 3rd Edition, Irv Englander John Wiley and Sons 2003 Wilson Wong, Bentley
RészletesebbenProgramozás alapjai. 10. előadás
10. előadás Wagner György Általános Informatikai Tanszék Pointerek, dinamikus memóriakezelés A PC-s Pascal (is) az IBM PC memóriáját 4 fő részre osztja: kódszegmens adatszegmens stackszegmens heap Alapja:
RészletesebbenMintavételes szabályozás mikrovezérlő segítségével
Automatizálási Tanszék Mintavételes szabályozás mikrovezérlő segítségével Budai Tamás budai.tamas@sze.hu http://maxwell.sze.hu/~budait Tartalom Mikrovezérlőkről röviden Programozási alapismeretek ismétlés
Részletesebben2. Számítógépek működési elve. Bevezetés az informatikába. Vezérlés elve. Külső programvezérlés... Memória. Belső programvezérlés
. Számítógépek működési elve Bevezetés az informatikába. előadás Dudásné Nagy Marianna Az általánosan használt számítógépek a belső programvezérlés elvén működnek Külső programvezérlés... Vezérlés elve
RészletesebbenThe Architecture of Computer Hardware and Systems Software: An InformationTechnology Approach 3. kiadás, Irv Englander John Wiley and Sons 2003
. Fejezet : Számrendszerek The Architecture of Computer Hardware and Systems Software: An InformationTechnology Approach. kiadás, Irv Englander John Wiley and Sons Wilson Wong, Bentley College Linda Senne,
RészletesebbenSzámítógép Architektúrák
Számítógép Architektúrák Utasításkészlet architektúrák 2015. április 11. Budapest Horváth Gábor docens BME Hálózati Rendszerek és Szolgáltatások Tsz. ghorvath@hit.bme.hu Számítógép Architektúrák Horváth
RészletesebbenAssembly Címzési módok. Iványi Péter
Assembly Címzési módok Iványi Péter Gépi kód Gépi kód = amit a CPU megért 1-13 byte hosszúak lehetnek az utasítások Kb. 20 000 variációja van a gépi kódú utasításoknak Számítógép architektúrától függ Feszültség
RészletesebbenBevezetés a számítástechnikába
Bevezetés a számítástechnikába, Címzési módok, Assembly Fodor Attila Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010. november 2/9. ú utasítás
RészletesebbenGyakorló feladatok. /2 Maradék /16 Maradék /8 Maradék
Gyakorló feladatok Számrendszerek: Feladat: Ábrázold kettes számrendszerbe a 639 10, 16-os számrendszerbe a 311 10, 8-as számrendszerbe a 483 10 számot! /2 Maradék /16 Maradék /8 Maradék 639 1 311 7 483
RészletesebbenArchitektúra, megszakítási rendszerek
Architektúra, megszakítási ek Mirıl lesz szó? Megszakítás fogalma Megszakítás folyamata Többszintű megszakítási ek Koschek Vilmos Példa: Intel Pentium vkoschek@vonalkodhu Koschek Vilmos Fogalom A számítógép
RészletesebbenA mikroprocesszor egy RISC felépítésű (LOAD/STORE), Neumann architektúrájú 32 bites soft processzor, amelyet FPGA val valósítunk meg.
Mikroprocesszor A mikroprocesszor egy RISC felépítésű (LOAD/STORE), Neumann architektúrájú 32 bites soft processzor, amelyet FPGA val valósítunk meg. A mikroprocesszor részei A mikroprocesszor a szokásos
RészletesebbenA mikroszámítógép felépítése.
1. Processzoros rendszerek fő elemei mikroszámítógépek alapja a mikroprocesszor. Elemei a mikroprocesszor, memória, és input/output eszközök. komponenseket valamilyen buszrendszer köti össze, amelyen az
Részletesebben2. Fejezet : Számrendszerek
2. Fejezet : Számrendszerek The Architecture of Computer Hardware and Systems Software: An Information Technology Approach 3. kiadás, Irv Englander John Wiley and Sons 2003 Wilson Wong, Bentley College
RészletesebbenVI. SZOFTVERES PROGRAMOZÁSÚ VLSI ÁRAMKÖRÖK
VI. SZOFTVERES PROGRAMOZÁSÚ VLSI ÁRAMKÖRÖK 1 Az adatok feldolgozását végezhetjük olyan általános rendeltetésű digitális eszközökkel, amelyeket megfelelő szoftverrel (programmal) vezérelünk. A mai digitális
Részletesebbentalálhatók. A memória-szervezési modell mondja meg azt, hogy miként
Memória címzési módok Egy program futása során (legyen szó a program vezérléséről vagy adatkezelésről) a program utasításai illetve egy utasítás argumentumai a memóriában találhatók. A memória-szervezési
RészletesebbenA 32 bites x86-os architektúra regiszterei
Memória címzési módok Jelen nayagrészben az Intel x86-os architektúrára alapuló 32 bites processzorok programozását tekintjük. Egy program futása során (legyen szó a program vezérléséről vagy adatkezelésről)
RészletesebbenELŐADÁS 2016-01-05 SZÁMÍTÓGÉP MŰKÖDÉSE FIZIKA ÉS INFORMATIKA
ELŐADÁS 2016-01-05 SZÁMÍTÓGÉP MŰKÖDÉSE FIZIKA ÉS INFORMATIKA A PC FIZIKAI KIÉPÍTÉSÉNEK ALAPELEMEI Chip (lapka) Mikroprocesszor (CPU) Integrált áramköri lapok: alaplap, bővítőkártyák SZÁMÍTÓGÉP FELÉPÍTÉSE
Részletesebben6. óra Mi van a számítógépházban? A számítógép: elektronikus berendezés. Tárolja az adatokat, feldolgozza és az adatok ki és bevitelére is képes.
6. óra Mi van a számítógépházban? A számítógép: elektronikus berendezés. Tárolja az adatokat, feldolgozza és az adatok ki és bevitelére is képes. Neumann elv: Külön vezérlő és végrehajtó egység van Kettes
RészletesebbenMi az assembly? Gyakorlatias assembly bevezető. Sokféle assembly van... Mit fogunk mi használni? A NASM fordítóprogramja. Assembly programok fordítása
Mi az assembly Gyakorlatias assembly bevezető Fordítóprogramok előadás (A, C, T szakirány) programozási nyelvek egy csoportja gépközeli: az adott processzor utasításai használhatóak általában nincsenek
RészletesebbenEgyszerű RISC CPU tervezése
IC és MEMS tervezés laboratórium BMEVIEEM314 Budapesti Műszaki és Gazdaságtudományi Egyetem Egyszerű RISC CPU tervezése Nagy Gergely Elektronikus Eszközök Tanszéke (BME) 2013. február 14. Nagy Gergely
RészletesebbenAlgoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek
Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek Tömb Ugyanolyan típusú elemeket tárol A mérete előre definiált kell legyen és nem lehet megváltoztatni futás során Legyen n a tömb mérete. Ekkor:
RészletesebbenProgramozás II. 2. Dr. Iványi Péter
Programozás II. 2. Dr. Iványi Péter 1 C++ Bjarne Stroustrup, Bell Laboratórium Első implementáció, 1983 Kezdetben csak precompiler volt C++ konstrukciót C-re fordította A kiterjesztés alapján ismerte fel:.cpp.cc.c
RészletesebbenAdatszerkezetek 1. Dr. Iványi Péter
Adatszerkezetek 1. Dr. Iványi Péter 1 Adat Adat minden, amit a számítógépünkben tárolunk és a külvilágból jön Az adatnak két fontos tulajdonsága van: Értéke Típusa 2 Adat típusa Az adatot kódoltan tároljuk
RészletesebbenProgramozás alapjai. 6. gyakorlat Futásidő, rekurzió, feladatmegoldás
Programozás alapjai 6. gyakorlat Futásidő, rekurzió, feladatmegoldás Háziellenőrzés Egészítsd ki úgy a simplemaths.c programot, hogy megfelelően működjön. A program feladata az inputon soronként megadott
RészletesebbenVIRTUALIZÁCIÓ KÉSZÍTETTE: NAGY ZOLTÁN MÁRK EHA: NAZKABF.SZE I. ÉVES PROGRAMTERVEZŐ-INFORMATIKUS, BSC
VIRTUALIZÁCIÓ KÉSZÍTETTE: NAGY ZOLTÁN MÁRK EHA: NAZKABF.SZE I. ÉVES PROGRAMTERVEZŐ-INFORMATIKUS, BSC A man should look for what is, and not for what he thinks should be. Albert Einstein A számítógépek
RészletesebbenA C programozási nyelv I. Bevezetés
A C programozási nyelv I. Bevezetés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv I. (bevezetés) CBEV1 / 1 A C nyelv története Dennis M. Ritchie AT&T Lab., 1972 rendszerprogramozás,
Részletesebbensallang avagy Fordítótervezés dióhéjban Sallai Gyula
sallang avagy Fordítótervezés dióhéjban Sallai Gyula Az előadás egy kis példaprogramon keresztül mutatja be fordítók belső lelki világát De mit is jelent, az hogy fordítóprogram? Mit csinál egy fordító?
RészletesebbenA C programozási nyelv I. Bevezetés
A C programozási nyelv I. Bevezetés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv I. (bevezetés) CBEV1 / 1 A C nyelv története Dennis M. Ritchie AT&T Lab., 1972 rendszerprogramozás,
RészletesebbenA MiniRISC processzor
BUDAPESTI MŰSZAKI ÉS GAZDASÁGTUDOMÁNYI EGYETEM VILLAMOSMÉRNÖKI ÉS INFORMATIKAI KAR MÉRÉSTECHNIKA ÉS INFORMÁCIÓS RENDSZEREK TANSZÉK A MiniRISC processzor Fehér Béla, Raikovich Tamás, Fejér Attila BME MIT
RészletesebbenPárhuzamos programozási platformok
Párhuzamos programozási platformok Parallel számítógép részei Hardver Több processzor Több memória Kapcsolatot biztosító hálózat Rendszer szoftver Párhuzamos operációs rendszer Konkurenciát biztosító programozási
RészletesebbenInformatika 1 2. el adás: Absztrakt számítógépek
Informatika 1 2. el adás: Budapesti M szaki és Gazdaságtudományi Egyetem 2015-09-08 1 2 3 A egy M = Q, Γ, b, Σ, δ, q 0, F hetes, ahol Q az 'állapotok' nem üres halmaza, Γ a 'szalag ábécé' véges, nem üres
RészletesebbenSzámítógép architektúra
Budapesti Műszaki Főiskola Regionális Oktatási és Innovációs Központ Székesfehérvár Számítógép architektúra Dr. Seebauer Márta főiskolai tanár seebauer.marta@roik.bmf.hu Irodalmi források Cserny L.: Számítógépek
RészletesebbenA Számítógépek felépítése, mőködési módjai
Mechatronika, Optika és Gépészeti Informatika Tanszék Kovács Endre tud. Mts. A Számítógépek felépítése, mőködési módjai Mikroprocesszoros Rendszerek Felépítése Buszrendszer CPU OPERATÍV TÁR µ processzor
RészletesebbenLabor gyakorlat Mikrovezérlők
Labor gyakorlat Mikrovezérlők ATMEL AVR ARDUINO 1. ELŐADÁS BUDAI TAMÁS Tartalom Labor 2 mikrovezérlők modul 2 alkalom 1 mikrovezérlők felépítése, elmélet 2 programozás, mintaprogramok Értékelés: a 2. alkalom
RészletesebbenIT - Alapismeretek. Feladatgyűjtemény
IT - Alapismeretek Feladatgyűjtemény Feladatok PowerPoint 2000 1. FELADAT TÖRTÉNETI ÁTTEKINTÉS Pótolja a hiányzó neveket, kifejezéseket! Az első négyműveletes számológépet... készítette. A tárolt program
Részletesebben1. ábra: Perifériára való írás idődiagramja
BELÉPTETŐ RENDSZER TERVEZÉSE A tárgy első részében tanult ismeretek részbeni összefoglalására tervezzük meg egy egyszerű mikroprocesszoros rendszer hardverét, és írjuk meg működtető szoftverét! A feladat
RészletesebbenA számítógépek felépítése. A számítógép felépítése
A számítógépek felépítése A számítógépek felépítése A számítógépek felépítése a mai napig is megfelel a Neumann elvnek, vagyis rendelkezik számoló egységgel, tárolóval, perifériákkal. Tápegység 1. Tápegység:
Részletesebben1. Digitális írástudás: a kőtáblától a számítógépig 2. Szedjük szét a számítógépet 1. örök 3. Szedjük szét a számítógépet 2.
Témakörök 1. Digitális írástudás: a kőtáblától a számítógépig ( a kommunikáció fejlődése napjainkig) 2. Szedjük szét a számítógépet 1. ( a hardver architektúra elemei) 3. Szedjük szét a számítógépet 2.
RészletesebbenProcesszor (CPU - Central Processing Unit)
Készíts saját kódolású WEBOLDALT az alábbi ismeretanyag felhasználásával! A lap alján lábjegyzetben hivatkozz a fenti oldalra! Processzor (CPU - Central Processing Unit) A központi feldolgozó egység a
RészletesebbenA Számítógépek hardver elemei
Mechatronika, Optika és Gépészeti Informatika Tanszék Kovács Endre tud. Mts. A Számítógépek hardver elemei Korszerű perifériák és rendszercsatolásuk A µ processzoros rendszer regiszter modellje A µp gépi
RészletesebbenPárhuzamos programozási platformok
Párhuzamos programozási platformok Parallel számítógép részei Hardver Több processzor Több memória Kapcsolatot biztosító hálózat Rendszer szoftver Párhuzamos operációs rendszer Konkurenciát biztosító programozási
RészletesebbenAssembly. Iványi Péter
Assembly Iványi Péter Miért? Ma már ritkán készül program csak assembly-ben Általában bizonyos kritikus rutinoknál használják Miért nem használjuk? Magas szintű nyelven könnyebb programozni Nehéz más gépre
RészletesebbenSzA19. Az elágazások vizsgálata
SzA19. Az elágazások vizsgálata (Az elágazások csoportosítása, a feltételes utasítások használata, a műveletek eredményének vizsgálata az állapottér módszerrel és közvetlen adatvizsgálattal, az elágazási
RészletesebbenMegoldás. Feladat 1. Statikus teszt Specifikáció felülvizsgálat
Megoldás Feladat 1. Statikus teszt Specifikáció felülvizsgálat A feladatban szereplő specifikáció eredeti, angol nyelvű változata egy létező eszköz leírása. Nem állítjuk, hogy az eredeti dokumentum jól
RészletesebbenAz interrupt Benesóczky Zoltán 2004
Az interrupt Benesóczky Zoltán 2004 1 Az interrupt (program megszakítás) órajel generátor cím busz környezet RESET áramkör CPU ROM RAM PERIF. adat busz vezérlõ busz A periféria kezelés során információt
RészletesebbenC programozási nyelv Pointerek, tömbök, pointer aritmetika
C programozási nyelv Pointerek, tömbök, pointer aritmetika Dr. Schuster György 2011. június 16. C programozási nyelv Pointerek, tömbök, pointer aritmetika 2011. június 16. 1 / 15 Pointerek (mutatók) Pointerek
RészletesebbenHardverközeli programozás 1 1. gyakorlat. Kocsis Gergely 2015.02.17.
Hardverközeli programozás 1 1. gyakorlat Kocsis Gergely 2015.02.17. Információk Kocsis Gergely http://irh.inf.unideb.hu/user/kocsisg 2 zh + 1 javító (a gyengébbikre) A zh sikeres, ha az elért eredmény
RészletesebbenAritmetikai utasítások I.
Aritmetikai utasítások I. Az értékadó és aritmetikai utasítások során a címzési módok különböző típusaira látunk példákat. A 8086/8088-as mikroprocesszor memóriája és regiszterei a little endian tárolást
RészletesebbenAdatelérés és memóriakezelés
Adatelérés és memóriakezelés Jelen nayagrészben az Intel x86-os architektúrára alapuló 32 bites processzorok programozását tekintjük. Egy program futása során (legyen szó a program vezérléséről vagy adatkezelésről)
RészletesebbenJárműfedélzeti rendszerek I. 3. előadás Dr. Bécsi Tamás
Járműfedélzeti rendszerek I. 3. előadás Dr. Bécsi Tamás ATmega128 CPU Single-level pipelining Egyciklusú ALU működés Reg. reg., reg. konst. közötti műveletek 32 x 8 bit általános célú regiszter Egyciklusú
RészletesebbenNyíregyházi Egyetem Matematika és Informatika Intézete. Input/Output
1 Input/Output 1. I/O műveletek hardveres háttere 2. I/O műveletek szoftveres háttere 3. Diszkek (lemezek) ------------------------------------------------ 4. Órák, Szöveges terminálok 5. GUI - Graphical
RészletesebbenMutatók és mutató-aritmetika C-ben március 19.
Mutatók és mutató-aritmetika C-ben 2018 március 19 Memória a Neumann-architektúrában Neumann-architektúra: a memória egységes a címzéshez a természetes számokat használjuk Ugyanabban a memóriában van:
RészletesebbenLabor gyakorlat Mikrovezérlők
Labor gyakorlat Mikrovezérlők ATMEL AVR ARDUINO 1. ELŐADÁS BUDAI TAMÁS 2015. 09. 06. Tartalom Labor 2 mikrovezérlők modul 2 alkalom 1 mikrovezérlők felépítése, elmélet 2 programozás, mintaprogramok Értékelés:
Részletesebben4. Fejezet : Az egész számok (integer) ábrázolása
4. Fejezet : Az egész számok (integer) ábrázolása The Architecture of Computer Hardware and Systems Software: An Information Technology Approach 3. kiadás, Irv Englander John Wiley and Sons 2003 Wilson
RészletesebbenProgramozási nyelvek (ADA)
Programozási nyelvek (ADA) Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 1. előadás Hasznos weboldal http://kto.web.elte.hu Program felépítése Programegységek (program unit) eljárások (procedure)
RészletesebbenElső sor az érdekes, IBM PC. 8088 ra alapul: 16 bites feldolgozás, 8 bites I/O (olcsóbb megoldás). 16 kbyte RAM. Nem volt háttértár, 5 db ISA foglalat
1 2 3 Első sor az érdekes, IBM PC. 8088 ra alapul: 16 bites feldolgozás, 8 bites I/O (olcsóbb megoldás). 16 kbyte RAM. Nem volt háttértár, 5 db ISA foglalat XT: 83. CPU ugyanaz, nagyobb RAM, elsőként jelent
RészletesebbenAlapismeretek. Tanmenet
Alapismeretek Tanmenet Alapismeretek TANMENET-Alapismeretek Témakörök Javasolt óraszám 1. Történeti áttekintés 2. Számítógépes alapfogalmak 3. A számítógép felépítése, hardver A központi egység 4. Hardver
RészletesebbenIT - Alapismeretek. Megoldások
IT - Alapismeretek Megoldások 1. Az első négyműveletes számológépet Leibniz és Schickard készítette. A tárolt program elve Neumann János nevéhez fűződik. Az első generációs számítógépek működése a/az
RészletesebbenA mikroprocesszor felépítése és működése
A mikroprocesszor felépítése és működése + az egyes részegységek feladata! Információtartalom vázlata A mikroprocesszor feladatai A mikroprocesszor részegységei A mikroprocesszor működése A mikroprocesszor
RészletesebbenOrvosi készülékekben használható modern fejlesztési technológiák lehetőségeinek vizsgálata
Kutatási beszámoló a Pro Progressio Alapítvány számára Budapesti Műszaki és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar Mérnök informatika szak Orvosi készülékekben használható modern
RészletesebbenProgramozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek
Programozás alapjai gyakorlat 4. gyakorlat Konstansok, tömbök, stringek Házi ellenőrzés (f0069) Valósítsd meg a linuxos seq parancs egy egyszerűbb változatát, ami beolvas két egész számot, majd a kettő
RészletesebbenA fordítóprogramok szerkezete. Kódoptimalizálás. A kódoptimalizálás célja. A szintézis menete valójában. Kódoptimalizálási lépések osztályozása
A fordítóprogramok szerkezete Forrásprogram Forrás-kezelő (source handler) Kódoptimalizálás Fordítóprogramok előadás (A,C,T szakirány) Lexikális elemző (scanner) Szintaktikus elemző (parser) Szemantikus
RészletesebbenDr. Oniga István DIGITÁLIS TECHNIKA 8
Dr. Oniga István DIGITÁLIS TECHNIA 8 Szekvenciális (sorrendi) hálózatok Szekvenciális hálózatok fogalma Tárolók RS tárolók tárolók T és D típusú tárolók Számlálók Szinkron számlálók Aszinkron számlálók
RészletesebbenFordító részei. Fordító részei. Kód visszafejtés. Izsó Tamás szeptember 29. Izsó Tamás Fordító részei / 1
Fordító részei Kód visszafejtés. Izsó Tamás 2016. szeptember 29. Izsó Tamás Fordító részei / 1 Section 1 Fordító részei Izsó Tamás Fordító részei / 2 Irodalom Izsó Tamás Fordító részei / 3 Irodalom Izsó
RészletesebbenHardver Ismeretek IA32 -> IA64
Hardver Ismeretek IA32 -> IA64 Problémák az IA-32-vel Bonyolult architektúra CISC ISA (RISC jobb a párhuzamos feldolgozás szempontjából) Változó utasításhossz és forma nehéz dekódolni és párhuzamosítani
RészletesebbenBevezetés a számítástechnikába
Bevezetés a számítástechnikába Megszakítások Fodor Attila Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010. november 9. Bevezetés Megszakítások
Részletesebben