Assembler tanulmányok kezdete

Sok programozási nyelvbe belekóstoltam már. Mint felületesen, mint komolyabban. Az Assemblertől mindig irtóztam. Miért? Magam se tudom, talán a gép közeli programozás, és a rengeteg rövid soros, különböző számábrázolást alkalmazó szintaxis rémisztett el. Első körben gép közelben talán digitális technikán szembesültünk egy ASM (assembler) programmal. Akkoriban minden féle elektromos kütyüre töltöttünk ilyen, asm programokat, amikkel vezéreltük. Dunsztunk se volt mit csinál. Az elektromos cucc csinálta a dolgát, mi örültünk, és végül levizsgáztunk. Tanulmányaim folyamán, a kar váltást követően is visszaköszönt ez az ASM. Ugyanis Architechtúrák 2 tantárgyat (tanár hiányában) Halász tanár úr tartja. Ez csak névileg architechturák, mert Assemblert tanulunk. Örültünk neki (na persze). A sok Programozó, között mi kis buta műszaki infósok sokat fogunk hozzá érteni…

Az előadásról nem tudok beszámolni sokat. Egyszer sikerült beülnünk (nem rajtunk múlt, a 150 helyes terembe 200-an voltak már a lépcsőn ülve), akkor se hangzott el semmilyen hasznos, érdekes információ. Így inkább a kiadott gyakorlati jellegű feladatokról tudok beszámolni. Az érdekesebb. Sose értettem, hogy lehet 0-ról több száz embert elméletileg táblánál megtanítani bármiben programozni. Azt úgy tanulja meg az ember ha csinálja. Az más, ha már valakinek vannak komolyabb ismeretei, akkor lehet finomítani a tudást, de inkább egy szeminárium keretein belül, mintsem egy monoton előadás során.

Be kell valljam egyáltalán nem értek az Assembler programozáshoz. Amit itt leírok, és fogok a jövőben, az csak saját tapasztalatok, és inkább korrektebb leírásokat próbálok csatolni a bejegyzésekhez. Máshogy, sőt sokkal értelmesebben is lehet programozni. Így senki se kérjen rajtam semmit számon, viszont felmerült kérdésekben szívesen segítek ha tudok.

Akkor kezdjük is. Mi ténylegesen nem Assembler fordítót használunk, hanem egy úgynevezett: High-Level Assembler (HLA) nyelvet, fordítót. Ez végül is egy olyan előfordító rendszer ami megenged nem épp ASM-ben létező programozási eszközöket (parancsokat). Ezzel persze könnyebbé téve a kódalkotást. Ez a HLA elérhető ingyenesen itt.

Akkor most nézzük a kódalkotáshoz, és ezzel a programozáshoz fontos ismereteket. Ami az első fontos dolog, hogy az ASM-nél regisztereket is tudunk használni. Ez azért fontos mert vannak olyan műveletek, amelyek regiszterek között végezhetőek el, illetve jelentősen gyorsabb ha így teszünk. A regiszterek jelölése a következő: EAX, EBX, ECX, EDX… (ezek 32 bites változók esetén érvényesek) Az első, az EAX, fontos és kiemelendő, ez az úgynevezett akkumulátor. Ez tekinthető az elsődleges regiszternek, ami sok műveletnél fog fontos szerepet játszani, illetve ebben szokás továbbadni a függvények értékét.

Mint változókba, mint regiszterekbe többnyire számokat tárolunk. Még akkor is amikor mi karakterként dolgozunk velük, azok csak számok. A számokat a magasabb szintű nyelvekkel ellentétben itt sokkal változatosabban, kell kezelnünk, konkrétan az ábrázolási módjukkal is számolni kell. A számok deklarálásánál mostantól meg kell adnunk, hogy azt a számot hány biten ábrázoljuk. Ezen túl itt is lehetőségünk van két különböző biten ábrázolt szám közötti műveletre, ilyenkor értelemszerűen a kisebb bitszámon ábrázolt számot konverziót (többnyire kibővítés) segítségével átalakítunk a nagyobb bitszámúra. A változók deklarálására a Bevezeto.hla fileban láthattok példákat. (Amennyiben már a HLA fordítója telepítve van úgy a „hla forras_neve.hla” parancsal lehet lefordítani, majd a forras_neve-re letrehozott file elindításával futtatni azt)

A bevezetést ezzel be is fejezném. Mellékelek még két viszonylag jól érthető dokumentumot az elsőt itt (ez egy diasor, ami a nyelv szintaktikáját mutatja be szerintem elég érhető és használható módon), a másodikat itt (ez pedig a HLA-ról számol be magyar nyelven kicsit rizsázós, de szintén hasznos kiadásban). Végezetül pedig szerepeljen egy ilyen példaprogram, amit mindenki kipróbálhat első programjaként, itt.

Vélemény, hozzászólás?

Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük