[[oktatas:programozás:assembly|< Assembly]] ====== Gépi kód ====== * **Szerző:** Sallai András * Copyright (c) 2011, Sallai András * Szerkesztve: 2011, 2014 * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]] * Web: https://szit.hu ===== A gépi kódról ===== A Neumann János szerint az utasításokat a memóriában kell tárolni. Volt amikor csak az adatok voltak a memóriában. Az utasítások olyan parancsok, amelyet a processzor hajt végre. Az utasításokat memóriában tároljuk, a processzor a végrehajtás idejére a regisztereibe tölti azokat. Az adatokkal vagy a memóriában számol vagy azokat is a regiszterbe tölti, ez programtól függ. Mivel a processzor hajtja végre az utasításokat, beszélhetünk egy processzor utasításkészletéről. Ezek azok az utasítások, amelyeket a processzor ismer. A gépi programok, ilyen utasítások sorozatából állnak. Egy gépi kódú utasítás két részből áll: | műveleti kód | címrész | A címrész egy-, két, vagy háromcímű. Az utasítást mindig úgy értelmezzük, hogy hajtsuk végre a műveletei kódot, a megadott címeken. A regiszterek egyike egy utasítás számláló, amely mindig a következő utasításra mutat. ===== A gépi kódú programozás ===== A következőkben a debug program segítségével ismerkedünk a gépi kódú programozással. Gépi kódú programozás során két dologgal dolgozunk, a processzor és a memória. | processzor | memória | A memória szegmensekre van osztva. Memória 0-dik szegmens | 0000 | | 0000 | | 0000 | | 0000 | 1419 szegmens | 0000 | | 0000 | | 0000 | | 0000 | Indítsuk el a Debug programot. Minden Windowsban megtalálható, vagy Linux esetén egy FreeDOS telepítése után használhatjuk. A Debug az indítás után a várakozási jelnek egy "-" (kötőjelet) jelenít meg. - A Debugban minden utasítás egyetlen karakterből áll. Az első parancs amit érdemes megismerni, az "r". Az "r" parancs a regiszterek tartalmát mutatja meg, de ezzel lehet megváltoztatni egy regiszter tartalmát is. A regiszterek tartalmának megtekintéséhez írjuk be az "r" parancsot. -r -r AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=1419 ES=1419 SS=1419 CS=1419 IP=0100 NV UP EI PL NZ NA PO NC 1419:0100 29D8 SUB AX,BX - Az Enter lenyomás után a fentieket látjuk. Konkrétan a processzor regisztereit, tartalmukkal látjuk. A regiszter a processzorban egy gyors elérésű tároló. hexadecimális számokat tudunk elhelyezni benne.