A regiszterekről
belépés
A regiszterek a processzor szerves részét képezik. Ezek az adatok ideiglenes tárolására szolgálnak. A regiszterek intenzív használata a programban azt a tényt határozza meg, hogy a hozzájuk való hozzáférés sebessége sokkal nagyobb, mint a memóriacelláké. A 32 bites processzorok 16 regiszterrel rendelkeznek. Csak az alapvető és a leggyakrabban használtakat vesszük figyelembe: általános célú nyilvántartások, utasításmutató, szegmensregiszterek és zászlóregiszterek.
Általános célú nyilvántartások
Bár a fenti regiszterek bármelyikét felhasználhatja operandusok, műveleti eredmények és mutatók tárolására, legyen óvatos az esp regiszterrel. A kötegmutató tetejét tárolja, és ennek az értéknek a helytelen megváltoztatása a program hibás működését és ütközését eredményezi.
Számos csapat speciális regisztereket használ az operandusok tárolására. Például a szövegszöveg-feldolgozási parancsok az ecx, esi és edi regiszterek tartalmát operandusként használják.
Az általános célú nyilvántartások használatának fő esetei a következők:- eax - az operandusok és a műveletek eredményeinek tárolására szolgál
- ebx - a ds szegmens adatainak mutatója
- ecx - számláló a húr műveletekhez és hurkokhoz
- edx - mutató bemenet / kimenet
- esi a mutató a ds szegmensben lévő adatokhoz, valamint a string parancsban lévő forrást mutató mutatóhoz
- Az edi az es szegmens adatainak mutatója, valamint a vevőkészülék mutatója a string parancsban
- esp - a kötegjelző teteje a szegmensben ss
- ebp - mutató a verem egyes adataihoz
Az x-ben végződő regiszterekben az alsó 16 bitre (ax, bx, cx és dx) lehet hivatkozni, amely viszont nagy bájtra (ah, bh, ch és dh) és a kisebb (al, bl , cl és dl), és együtt dolgozni, mint a 8 bites hosszúságú regisztereknél. A Pointers esp (a verem felső mutatója) és az ebp (alapregiszter), valamint az index indexek (előindex) és az edi (vevők indexe) index csak 32 bites címzést tesz lehetővé.
Szegmensrekordok
A szegmensregiszterek (cs, ds, ss, es, fs és gs) 16 bites szegmensleírókat tárolnak. A szegmensleírók olyan speciális mutatók, amelyek meghatározzák a szegmens helyét a memóriában. A processzor védett módjában (Windows 95/98) minden szegmens regiszter ugyanarra a szegmensre mutat, ezért általában nem használják a programban.
Zászlók regisztrálása
És végül a zászlók nyilvántartása. Többet fogunk róla beszélni. Ez a regiszter olyan zászlókészlet, amelyeket a végrehajtott parancsok eredményei állítanak be vagy állítanak vissza.
Remélem, kedves barátaim, tudjátok, hogy a zászló 1-bites változó, amelyet feltételes ugrásparancsokban használnak. Ha ennek a változónak az értéke 1, úgy tekinthető, hogy a zászló be van állítva, ha a 0 nullázódik. Először is érdekelnek: a zéró zászló, a szállító zászló és a jel zászlója.- A nulla zászló (zf) akkor van beállítva, ha az eredmény nulla, amikor a következő parancs végrehajtásra kerül, és a többi nem nulla értékre visszaáll.
- Az átviteli zászló (cf) akkor van beállítva, amikor a legjelentősebb bit átkerül vagy kölcsönzésre kerül a számtani műveletek során, különben visszaáll.
- A túlcsordulási jelző (of) akkor van beállítva, ha az aritmetikai művelet eredménye nem illeszkedik a rendeltetési operandusba.
- A jelmagyarázat (sf) az eredmény legrégebbi bitjének egyetlen értékére van beállítva - a negatív szám jele.