Assembler regiszterek: a parancsok típusai, célja és jellemzői

Processzorcellák, amelyeket assembler regisztereknek is neveznek, az alacsony - szintű programozási nyelv, amely irányítja őket , a szabad elemek egy bizonyos blokkját képviseli a memóriában. Az jellemző tulajdonság rendkívül gyors memória-hozzáférés. A regisztereket leggyakrabban a processzor parancsok végrehajtása során használják, és nem állnak rendelkezésre a programozó számára. Például a rendelkezésre álló szupergyors memóriából történő mintavétel során a következő parancs szám szerint, kódja a bináris rendszerben egy regiszterbe kerül.

A nyilvántartáshoz közvetlenül nem lehet hozzáférni. Ezenkívül számos rendelkezésre álló memóriablokk létezik, de csak a következőkből lehet hozzáférni hozzájuk az operációs rendszer héja. Ezek közé tartoznak a vezérlő szegmens regiszterek, valamint az árnyékleíró rendszerek. Ezeket a nyilvántartásokat kizárólag az operációs rendszer fejlesztői használják munkájuk során.

Regiszter felépítése az Assemblerben

A nyilvántartások típusai

A programozás során különböző összeszerelő regisztereket használnak a különböző igényekhez. A céloktól függően használják őket. Például a számláló regisztert mind az egyszerű, mind a beágyazott hurkok rendezésére használják. A fő típusok az összeszerelő regisztereket az alábbiakban soroljuk fel:

  • Általános célú nyilvántartások.
  • Index regiszterek.
  • Mutató regiszterek.
  • Szegmentált memóriablokkok.
  • Zászló nyilvántartások.

Valójában minden regiszter 32 bitet foglal el a memóriában. Vagyis nullától 4294967295-ig tartalmazhatnak számokat. A regiszterek egy része 16 és 8 bites részekre oszlik. Ez lehetővé teszi a memóriablokk vagy az egész cella egy részének kezelését, az adatok csak egy részét írva rá.

Memóriakezelési Parancsok

Az összeszerelő regisztereket az elvégzett funkciók szerint nevezték el:

  • EAH-az akkumulátor-nyilvántartás akkumulátora;
  • EBX-Base-Base;
  • ECX – a számláért felelős viszonteladó;
  • EDX-Data-adatcellák blokkja;
  • ESI-Forrásindex-forrásregiszter;
  • EDI-Célindex-vevőkészülék-nyilvántartás;
  • ESP - pointer a verem-pointer a verem;
  • EBP-alapmutató - verem alapmutató.

A regiszterek használatának jellemzői

Érdemes megfontolni, hogy a kijelölt nyilvántartások mindegyike nemcsak adatbevitelre használható. Például bármilyen decimális számot beírhat az adatbázis-regiszterbe, és számlálóként használhatja. Nem kívánatos azonban ilyen célokra használni a mutatóknak megfelelő memóriablokkokat-ESP és EBP, mivel ebben az esetben problémák merülhetnek fel az absztrakt adattípus celláihoz való hozzáféréssel. Az összeszerelő regiszterek célja bizonyos információk tárolása, amelyekhez bármilyen felhasználható.

ASM kód és listázási reprezentáció

Általános célú nyilvántartások

Az ilyen típusú regiszterek célja az adatok mentése számítási műveletek után. Valójában a MOV paranccsal bármilyen formában és számítási rendszerben megadhatja az információkat: bináris, oktális, decimális vagy hexadecimális. Egy másik név az assembler adatregiszterek. Az általános célú összeszerelő regiszterek listája a következőket tartalmazza:

  • EAH (akkumulátor) felhalmozási nyilvántartás. Három kisebb, 8 bites blokkból áll: AH, AN, AL. Szükség esetén elérheti a két alsó blokkot.
  • EVX (base) - az adatbázisért felelős adatblokk. Csakúgy, mint minden általános célú regiszter, két kisebb, 8 bites és egy hexadecimális részből áll. Így egyszerre több numerikus érték is elhelyezhető egy regiszterben.
  • ECX (számláló) - felelős a számlálóért. A ciklusok végrehajtása során használt. A hurok parancs nem működik nélküle. Két részből áll, amelyek közül az egyik két nyolc bites blokkot tartalmaz CH és CL.
  • EDX-adatok - a RAM címének pontos meghatározásához szükséges műveletek a bemeneti és kimeneti funkciókhoz. Ezenkívül az adatok elhelyezhetők ebben a nyilvántartásban átirányítás céljából, hogy eljárásokban és sablonokban használják őket. A 64 bites verzióban lévő regiszterek használata

Regisztrálja a mutatókat

Az assembler veremével való együttműködéshez a fejlesztők kétféle regisztert biztosítanak. Elérni őket , egy műveletet hajtanak végre a hozzáadáshoz egy bizonyos adattípus bitértékei egy absztrakt típus csúcsmutatójához, amelyet a verembe helyeztek. Minden számítás kézzel történik. Ily módon nagy mennyiségű adatot tárolnak és továbbítanak a szubrutinokba-eljárásokba és tömbökbe. Az assembler mutatóregiszterei között a következőket különböztetjük meg:

A processzor és a regiszterek felépítése
  • Az ESP regiszter egy mutató a verem tetejére. Mindig tartalmazza a processzor gyorsítótárában a verembe helyezett első elem címét. Szükség esetén más adatokkal is kitölthető. Tartalmaz egy kisbetűs SP-t, amely 16 bitből áll.
  • Az EBP regiszter (alapmutató) a veremben található adatok címzéséhez szükséges memóriacellák blokkja. Ugyanakkor nagyban megkönnyíti az összes adathoz és változóhoz való hozzáférést. Tartalmazza a BP junior kategóriáját.

Regiszterek-indexek

Index memóriablokkok szükségesek a kiterjesztett indexeléshez. Ezenkívül részt vesznek néhány aritmetikai műveletben és bájt karakterláncok feldolgozásában – tetszőleges értéket tartalmazó bájtok sorozata. Az Assembler két regisztert tartalmaz, amelyek felelősek az ESI és az EDI indexeléséért. Írjuk le őket:

  • Az ESI (Forrásindex) magában foglalja a forrásindexet (az a hely, ahonnan az adatok származnak), és a bájtos karakterláncok műveleteinek egy részéhez szükséges;
  • A számítások eredményeinek rögzítéséhez EDI (Destination index) szükséges. A karakterlánc-műveletek egy részéhez is használható. Részben az ES szegmensregiszterhez kapcsolódik.

Szegmensregiszterek

Az első blokkok a memóriában. Aktuális szegmenseknek nevezzük. A szoftver több mint négy memóriablokkot oszthat ki. Azonban meg kell adni a blokkok címét a memóriacellákban a szegmensregiszterek között. Az ilyen típusú memóriablokkok szigorúan specifikusak, ezért lehetetlen külön típusú adatokkal kitölteni őket. A regiszterblokkok sorrendje a memóriában változhat. A szegmensregiszterek véletlenszerű sorrendben vannak tárolva véletlenszerű memóriahelyeken.

  • A CS-kód regiszter a szokásos formában tartalmazza a kezdet címét a szoftverkód szegmensből (a kód gépi ábrázolásának kezdete). Így az átmenetet parancsok hajtják végre a parancsmutató IP miatt.
  • Az adatregiszter tartalmazza azoknak az adatoknak a címét, amelyeket a program az indítás kezdetén feldolgoz. Az adatok mozgása az eltolás miatt történik, amelyet az EIP-nyilvántartásban rögzítenek.
  • Stack szegmens (ESS) van szükség, hogy mentse az elején egy absztrakt adattípus szegmens.
  • Az Extra szegmens egy kiegészítő regiszter, amely üres területet tartalmaz az adatok írásához néhány művelet byte karakterláncokon. Hasonló információkat tartalmazhat.

az adatregiszterhez a parancsmutató regiszter

Kommunikáció a memóriablokkok között

Ez a típus a parancsra utal. Ezzel a mutatóval az assembler regiszter a listába kerül. Adatokat tartalmaz a következő parancs eltolásáról az előzőhöz képest. Gyakorlatilag nem használják a szoftverfejlesztésben, de meg kell tekinteni a kódfuttatási listát. Így követik nyomon a hibákat.

Assembler zászlók nyilvántartása

Felelős a CPU jelenlegi állapotáért. 16 bitből áll, amelyek közül csak 9 foglalható el. A memóriablokk kitöltése végrehajtás, kihagyás vagy hibakód után történik az előző parancs eredményeként. Ezenkívül néhány bitet a processzor használ, és inicializálható és törölhető egy adott parancsrendszeren keresztül. Így kezelik a parancsrendszert.

Cikkek a témában