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.

Kapcsolódó cikkek