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:
| 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 |
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.