A számítógép felépítése


MI IS AZ AZ ASSEMBLY PROGRAMOZÁS ÉS MIÉRT OLYAN KÜLÖNLEGES?

Az assembly az, ahol nem elég csupán a nyelv ismerete, hanem a gépet is ismerni kell, amin a programunk működni fog. Ennek is leginkább a központi részét, a processzort más néven CPU-t. Természetesen munkánk során sok más egységgel is kapcsolatba fogunk kerülni, mint pl. a video kártya, I/O vezérlő, RAM, stb.

Ezek megismerése elengedhetetlen a programok működésének megértéséhez.

MI A CPU?

A CPU olvassa ki és értelmezi a RAM-ban tárolt adatokat. A processzorban található az ALU mely az aritmetikai és logikai művelet elvégzéséért felelős (összeadás, kivonás, és, vagy nem, stb.)

A feldolgozás során az egyes műveletekhez szükséges adatokat regiszterekben tároljuk, melyek szintén a processzorban helyezkednek el. Ezek a regiszterek sokban hasonlítanak más programnyelvekben változónak nevezett eszközhöz, csupán sokkal speciálisabbak és számuk előre meghatározott.


RAM MŰKÖDÉSE

A RAM egy olyan adattároló egység, melyben a programok, és általában a feldolgozandó adatok tárolása történik a program működése közben. Az adatokat a RAM bináris (kettes számrendszer) alakban, bitenként tárolja 0-ák és 1-ek formájában. De hogy a sok 0 és 1 valami rendszert alkosson, csoportokba szervezték azokat. A legkisebb ilyen csoport a byte, amit 8 bit alkot. De ehhez hasonló még a word, dword, qword is.

A byte felépítése:

7 6 5 4 3 2 1 0
1 0 1 1 0 0 0 1

Az ábra alapján láthatjuk, hogy a byte helyértékeit 0-7 számokkal jelöltük, ahol minden egyes érték 1 bit. A legkisebb helyértékű bit a 0-s, a legnagyobb a 7-es. Mintaképpen ábrázoltuk a 177-es számot.

1*128+0*64+1*32+1*16+0*8+0*4+0*2+1*1=177

A word esetén 2 byte kapcsolódik össze:

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


A különbség csupán annyi, hogy az így kialakult 16 bitből álló egységet 2 logikai részre bontottuk, alsó és felső byte-ra.


HOGYAN MŰKÖDIK A RAM?

Tehát a memória legkisebb egysége elérés szempontjából a byte, ami azt jelenti, hogy a memóriába csak a byte-okat tudjuk írni, illetve olvasni, az egyes biteket csak úgy tudjuk állítani, hogy beírunk a memóriába egy olyan byte-ot, aminek a kívánt bitje a megfelelő értékű.

A memória byte-os szervezésű, azaz egymás után álló byte-ok sorozatából áll. Az egyes memóriabyte-okat úgy érhetjük el, hogy minden byte-hoz egy cím van hozzárendelve és íráskor vagy olvasáskor ezen cím segítségével hivatkozhatunk rá. A processzor is ezen címek alapján éri el az egyes byte-okat, úgy, hogy egy címbuszon és egy adatbuszon keresztül kapcsolódik a memóriához, ami valójában nem más, mint néhány vezeték (8 , 16, 32, vagy 64 db.) és még egy kis elektronika. A címbuszon megjelenő érték választja ki, hogy melyik memóriabyte-ot akarjuk elérni és az így kiválasztott byte az adatbuszon fog mozogni.

Egy processzor memóriakapacitását az szabja meg, hogy milyen széles (hány bites) a címbusza. Egy IBM XT-nek például 20 bites címbusza van, ami azt jelenti, hogy maximum 220 azaz 1048576 byte-ot (1Mbyte-ot) képes megcímezni. Ez egy 386-os AT gépnél, ahol 32 bites címbusz van (ez 4Gbyte). És mivel az adatbusza is 32 bites, képes az adatokat dword-ösen elérni. Ez azt jelenti, hogy egyszerre nem csak 1 byte-ot tud írni vagy olvasni, hanem 4-et. De azért, hogy az XT-re írt programok magasabb szintű gépeken is futtathatóak legyenek, a számítógép képes az adatbuszát átállítani az XT-nek megfelelőre ekkor úgy viselkedik, mint egy XT csak egy árnyalatnyival gyorsabb.


HOGYAN KÖZELÍTSÜK MEG A GÉPIKÓDOT

Egy számítógépben az összes tulajdonsága mellett az az egyik legcsodálatosabb, hogy bármit megvalósíthatunk vele, amit csak el tudunk képzelni. Természetesen ma még elég sok akadály állja útját szárnyaló fantáziánknak, de a számítástechnika és a programozás fejlődésével egyre kevesebb a megoldhatatlan probléma.

A gépikódú programozás a programozók legnagyobb fegyvere (már akik ismerik), ugyanis csak gépikódban lehet a számítógép minden adottságát teljes mértékben kihasználni. Mindezek mellett ennek a nyelvnek a megtanulása a legnehezebb mivel ahhoz, hogy valaki képes legyen gépikódú programokat írni, nem elég csak magát a programozási nyelvet megtanulnia, ismernie kell magát a számítógépet is.


A GÉPIKÓD ÉS AZ ASSEMBLY KAPCSOLATA

A gépi kódú nyelv tulajdonképpen számokból áll. Ezek a számok tárolódnak a memóriában és ezeket értelmezi, illetve hajtja végre a processzor. Azonban az utasításokat jelképező összes szám bemagolása egy kicsit száraz lenne, így kitaláltak egy jelképes nyelvet, melyet úgy alkottak meg, hogy csoportokba szedték az egyes utasításokat és ezeknek a csoportoknak könnyen tanulható neveket adtak. Ezekből az utasításokból álló nyelvet nevezték el ASSEMBLY-nek.


MI IS AZ A PROGRAMOZÁS

Egy program nem más, mint a megvalósítandó feladat a gép nyelvén. Amihez úgy juthatunk el, hogy a feladatot elkezdjük felbontani egységekre, majd azokat tovább olyan apró részekre, melyek már helyettesíthetők a gép szavaival, utasításaival. Egy-egy program megírását mindig különböző szempontok irányítják, melyek nagymértékben függnek az adott feladattól, de vannak olyan szempontok is, melyek általánosíthatók. Ezek határozzák meg a számítógépes programozás jellegét, és ezek miatt szükséges a programozáshoz más gondolkodás, mint ami általában megszokott. Ezek az általánosítható szempontok alkotják egyben a programozás eszközeit, melyek más megvilágításba helyezik a feladatot.


A PROGRAMOZÁS ESZKÖZEI

Eljárások: ezek olyan programrészek melyek a feladatban többször előforduló, ismétlődő folyamatokat takarnak. Ilyenkor ezt csak egyszer írja meg az ember úgy, hogy bárhonnan elérhető, és ha szükséges, megfelelően paraméterezhető legyen. Ilyen eset például egy keretrajzolás, ahol bemenő paraméternek megadjuk a keret bal felső sarkának koordinátáit, szélességét és magasságát. Végrehajtva az eljárást, a megfelelő méretekkel kirajzolja a keretet.

Változók: Egy olyan eszközei a programozásnak, melyek segítségével adatokat tárolhatunk a memóriában. Bizonyos feladatok megoldása elképzelhetetlen lenne változók használata nélkül, mivel a regiszterek száma korlátozott, nem tárolhatunk minden információt ezekben, de mivel a memória mérete nagyságrendekkel nagyobb, ezért kijelölhetünk részeket, ahol a számunkra fontos információt tárolhatjuk. Ezen információ nagyon sokféle lehet (szám, szöveg, kép, stb.). Ezek, mint azt később látni fogjuk, csak felhasználásukban különböznek, tárolásukban nem.

Ciklusok: Ez egyike a legfontosabb eszközöknek, ugyanis ezek segítségével a feladatban egymás után többször ismétlődő műveleteket egyszerűsíthetünk le. Ha például az a feladat, hogy írjuk ki 10-szer egymás után a nevünket a képernyőre, akkor azt meg lehet oldani úgy is, hogy tízszer egymás után megírjuk az adott programot, de úgy is, hogy csak egyszer írjuk meg és egy ciklus segítségével tízszer egymás után lefuttatjuk. Az eredmény ugyanaz, csak a program hossza az utóbbi esetben töredéke a másiknak, emellett egyszerűbbé, áttekinthetőbbé is válik.

Elágazások, feltételek vizsgálata: Talán ez az egyik legegyértelműbb eszköze a programozásnak, ugyanis számtalan olyan eset van, amikor meg kell vizsgálni egy művelet eredményét, egy visszaérkező választ és ennek megfelelően választani kell adott lehetőségek közül.

Egy szintet vissza, vagy vissza a főmenübe.