Tartalom
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](https://cdn2.faqukr.com/fimg/registry-assemblera-vidy-naznachenie-i-osobennost_2.webp)
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](https://cdn2.faqukr.com/fimg/registry-assemblera-vidy-naznachenie-i-osobennost_3.webp)
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ó](https://cdn2.faqukr.com/fimg/registry-assemblera-vidy-naznachenie-i-osobennost_4.webp)
Á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.
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](https://cdn2.faqukr.com/fimg/registry-assemblera-vidy-naznachenie-i-osobennost_6.webp)
- 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](https://cdn2.faqukr.com/fimg/registry-assemblera-vidy-naznachenie-i-osobennost_7.webp)
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.