A gépi kód és Assembly

A számítástechnikában használt műveletek és adatok (általában bináris – kettes számrendszeren alapuló – vagy hexadecimális – tizenhatos számrendszeren alapuló – számokkal ábrázolt) olyan sora, amely a számítógép processzora számára közvetlen utasításként értelmezhető. A Neumann elv szerint a programot a memóriában kell tárolni. Az utasítás maga egy olyan parancs, melyet a processzor hajt végre, a memóriában vagy a regiszterekben tárolt adat alapján. Az utasítások köre, melyet a processzor végre tud hajtani, az az utasításkészlete. A gépi kódú program utasítások értelmes sorozata, mely valamilyen feladatot lát el. Valamilyen algoritmust hajt végre. A gépi kódú program a memóriába töltődik és utasításait hardverileg végrehajtja a gép. Ezeket sorra hajtja végre, egy fontos regiszter az utasításszámláló, mely a soron következő utasítás címét tartalmazza.

Egy utasítás két részből áll, műveleti kód és címrész (mely 1,2 vagy 3 operandust tartalmaz – egy-, két- vagy háromcímű gépi kód). A számítógép végrehajtja a műveleti kódban leírt utasítást a megadott operandusokkal (adatfeldolgozási, számítástechnikai műveletben szereplő mennyiség). Az utasítás végrehajtása a következő:

  1. Olvasd be az utasításszámláló által meghatározott utasítást a processzorba2. Dekódold, határozd meg mit kell végrehajtani
  2. Ha kell, olvasd be az operandusok által meghatározott memóriarekeszek tartalmát a processzor meghatározott rekeszeibe
  3. Hajtsd végre
  4. Utasításszámláló új tartalmának meghatározása.

Ez együttesen egy gépi ciklust alkot. A gépi kód szerepe a speciális berendezéseknél marad meg, ilyenek a szerszámgépek, riasztók. Egy szinttel magasabb nyelv, eredeti formájában egy gépi kódú utasításnak egy assembly felel meg, ez kölcsönös és egyértelmű kapcsolatot jelent (tehát gépiből lehet assembly és fordítva is, azaz disassembly). Műveleti kód helyett igéket, azok rövidítéseit használjuk (LOAD), illetve memóriacímek helyett változókat szerepeltetünk (pl. x). Ez előnyösebb, mert könnyebb a programozás, jobb az olvashatósága (hibakeresés, módosítás lényegesen egyszerűbb), illetve messze jobb a dokumentálhatósága.

Az assembly nyelvű programot az assembler fordítja végrehajtható formára (legfontosabb feladata műveleti kódokkal és címekkel helyettesíteni a nyelv utasításait). A makroassembly egy tárolt assembly utasítássorozat. Csak a makro nevét kell megadni a kívánt ponton és a rendszer beilleszti a programba az utasítást. Az assembly nyelv passzív megismerése is fontos, mert adott hibáknál le kell menni a program szintjére a hibakeresésnél. Aktív szintű ismeretre egyre kevésbé van szükség, inkább magasabb szinten írják már a programokat, bár az assembly sokkal jobban képes lenne kihasználni az adott gép képességeit, a felhasználóbarát rendszerek azonban előtérbe kerülnek, még az operációs rendszerek is ilyenek kezdenek lenni. Az assembly egyik használata a magasabb programnyelvekben egy assembly blokk beépítése a gazdaságos végrehajtás miatt.