HIK Elektronikus Felsőoktatási Tankönyv- és Szakkönyvtár
A Kempelen Farkas Felsőoktatási Digitális Tankönyvtár/vagy más megjelenítő által közvetített digitális tartalmat a felhasználó a szerzői jogról szóló 1999. évi LXXVI. tv. 33. paragrafus (4) bekezdésében meghatározott oktatási, illetve tudományos kutatási célra használhatja fel. A felhasználó a digitális tartalmat képernyőn megjelenítheti, letöltheti, arról elektronikus adathordozóra vagy papíralapon másolatot készíthet, adatrögzítő rendszerében tárolhatja. A Kempelen Farkas Felsőoktatási Digitális Tankönyvtár/vagy más megjelenítő weblapján található digitális tartalmak üzletszerû felhasználása tilos, valamint kizárt a digitális tartalom módosítása és átdolgozása, illetve az ilyen módon keletkezett származékos anyag további felhasználása.

2.2. Második generációs programozási nyelvek:ASSEMBLY

A gépi kódú programozási nyelv hátrányai miatt új nyelvet kellett kifejleszteni.

Az ASSEMBLY nyelv első közelítésben a ’megérthető gépi kód’ nyelve. Az utasítások számkódjait néhány betűs (2-3-4 betűs) ún. mnemonikokkal helyettesítették. Egy ilyen mnemonik (emlékeztető szócska) a gépi kódú utasítás jelentéstartalmára utalt. Például a „memória-tartalom beolvasása egy regiszterbe” (bemozgatás) az angol MOVE=mozgatni szó alapján a MOV mnemonikot kapta. A „két szám összeadása” az angol ADD=összeadni mnemonikot kapta. Az 1. ábrán a harmadik oszlopban szerepelnek a gépi kódú utasítások assembly nyelvű megfelelői.

A MOV utasítás önnmagában nem lefordítható gépi kódra, hiszen azt is meg kell adni, hogy melyik memória-cím tartalmát kell betölteni melyik regiszterbe. Az utasítás egyik lehetséges formája „MOV EAX,<memcím>”. Ennek már egyértelműen megfelel egy gépi kódú utasításkód (mov eax = 8B), a memóriacímet pedig a további számkódok írják le.

Ennek megfelelően az assembly nyelv egy adott mikroprocesszor adott gépi kódjához készült el. Ezért az assembly nyelv is processzor-függő, de ezen a szinten újabb fogalmak jelentek meg:

Forráskód: az assembly nyelvű programot a CPU nem képes közvetlenül megérteni és végrehajtani. Az assembly nyelvű programot egy szöveges file-ban kell megírni (forráskód), majd le kell fordítani gépi kódú, ún. tárgyprogramra (object code).

Fordítás: az a folyamat, amely közben a forráskódot egy fordítóprogram (compiler) gépi kódú utasítások sorozatára transzformálja.

Az assembly nyelv esetén ezt a fordítóprogramot ASSEMBLER-nek nevezték. Az assembler végigolvasta a forráskódot sorról-sorra, e közben generálta a gépi kódú utasítássorozatot - a mnemonikok alapján előállította a megfelelő gépi kódú utasítás számkódját. Az assembler nem bonyolult program, hiszen a fordítás egyszerű szabályok szerint működik.

Az ASSEMBLER a forráskód feldolgozása közben egyszerű ellenőrzéseket is elvégez. Amennyiben valamely mnemonikot nem ismeri fel (pl. a programozó elgépelte), akkor a fordítási folyamat leáll, az assembler hibaüzenettel jelzi a hiba okát és helyét a forráskódban. A forráskódban az olyan jellegű hibákat, melyek súlyossága folytán a fordítás nem fejezhető be – fordítási időben történő hibának nevezzük. Ennek oka általában a nyelv szabályai (szintaktikája) elleni vétség, ezért ezt szintaktikai hibának is nevezzük.

Az assembly nyelvű programok forráskódja olvashatóbb, mint a gépi kód, illetve könnyebben módosítható. Az assembler a program szintaktikai helyességét ellenőrzi le, emiatt az első eszköznek is tekinthetjük, amelyet a programozók munkájának segítésére (is) alkottak.

A fordítás ellenkező művelete a de-compiling. Ennek során a gépi kódú program-változatból a programozó megpróbálta visszaállítani annak assembly nyelvű eredetijét. Erre sokszor azért volt szükség, mert az eredeti forráskód elveszett, de a programon mégis módosítani kellett. A gépi kódú programok módosíthatóságának nehézségét jelzi, hogy az assembly-programozók már nem voltak hajlandók közvetlenül a gépi kódot módosítani, inkább helyreállították az assembly forráskódot, abban elvégezték a módosításokat, majd újra lefordították (generálták) a gépi kódú programot.

Ez a művelet persze némi veszteséggel járt – hiszen a tényleges eredeti assembly forráskódban többek között megjegyzések is lehettek. Ezek a megjegyzések a gépi kódú változatba nem kerültek bele, ezért visszaállítani sem lehet őket.

Ami viszont nagyon fontos lépés – a fordítóprogramok megjelenésével megjelent az igény ezek intelligenciájának fejlődésére!