Ľudmila Jánošíková

Programovanie v jazyku symbolických adries

pre 32-bitové procesory Intel
Obsah Index
Univerzálne registre

Ako už ich pomenovanie naznačuje, väčšina inštrukcií používa registre z tejto skupiny. Každý univerzálny register môže byť naplnený z pamäti a jeho obsah zapísaný do pamäti. Tieto registre slúžia na uloženie zdrojových a cieľových operandov pri aritmetických a logických operáciách a presunoch dát. Môžu obsahovať adresu pamäťového miesta alebo sa podieľať na jej výpočte. Ako vidno z obr. 5, všetky univerzálne registre sú 32-bitové registre. Možno do nich uložiť napr. jedno štvorbajtové celé číslo. Dolnú polovicu registrov EAX, EBX, ECX a EDX (prvých 16 bitov) možno používať aj samostatne s označením AX (resp. BX, CX, DX). Prvé procesory rady i80x86 (8086, 80186 a 80286) mali len tieto 16-bitové registre. K ich rozšíreniu na 32 bitov došlo až s procesorom 80386, čo je vyjadrené aj v ich označení (Extended-AX, ...). Do 16-bitového registra možno uložiť napr. dvojbajtové celé číslo bez znamienka (v Pascale by mu zodpovedala premenná typu word). Obidve polovice registrov AX, BX, CX a DX možno používať samostatne ako 8-bitové registre. Dolná polovica je označená AL, BL, CL, DL (A-Low, …), horná AH, BH, CH, DH (A-High, …). Do 8-bitového registra možno uložiť napr. ASCII kód nejakého písmena alebo znaku.

Obr. 5. Univerzálne registre

Okrem vyššie popísaného všeobecného účelu má každý register zvláštnu úlohu. Register EAX sa nazýva akumulátor. Je najčastejšie používaným registrom pri presunoch dát do a z pamäti, pretože kód inštrukcie mov eax,pamäť a mov pamäť,eax je o 1 bajt kratší než kód rovnakej inštrukcie s iným registrom. Register EAX (prípadne jeho časť) sa vždy používa pri násobení a delení.

Dolné polovice registrov EBX, EBP, ESI a EDI sa využívajú pri relatívnom adresovaní v 16-bitovom režime. O relatívnom adresovaní sa dočítate v nasledujúcej kapitole, zatiaľ nám stačí vedieť, že relatívne adresovanie sa využíva pri spracovaní polí dát (tabuliek, reťazcov a pod.). Registre BX a BP sa volajú bázové registre, lebo sa do nich ukladá prvá adresa (báza) poľa dát. Registre SI (source index) a DI (destination index) obvykle obsahujú index do poľa. Registre SI a DI sa používajú ako indexové registre v reťazcových inštrukciách v 16-bitovom režime, podobne sa využívajú celé registre ESI a EDI v 32-bitovom režime.

Register ECX (tiež CX) slúži ako počítadlo (counter) v inštrukciách cyklu.

Register EDX (tiež DX) sa používa pri násobení a delení. Okrem toho, DX je jediným registrom, ktorý môže obsahovať adresu portu vstupného alebo výstupného zariadenia v inštrukciách in a out.

Register ESP je ukazovateľ zásobníka (stack pointer). ESP obsahuje offset vrcholu zásobníka v zásobníkovom segmente v 32-bitovom režime. Dolná polovica registra ESP (SP) má rovnakú funkciu v 16-bitovom režime (aj v reálnom režime). Aj keď ukazovateľ zásobníka patrí medzi univerzálne registre a možno ho používať v aritmetických a logických operáciách, nie je to obvyklé, pretože zmenou jeho obsahu vlastne meníme polohu zásobníka v pamäti. Doporučujeme meniť obsah ESP (SP) jedine vtedy, keď viete presne, čo robíte. Inak hrozí, že si ukladaním do zásobníka prepíšete iné dáta alebo pri vyberaní zo zásobníka nevyberiete správne údaje. Toto nebezpečenstvo hrozí aj vtedy, keď sami do zmeneného zásobníka nič neukladáte, pretože počas chodu vášho programu sa môžu vyskytnúť prerušenia od rôznych zariadení a ich obsluha môže používať zásobník.

Hore

Načo je vám jazyk symbolických adries?

Architektúra moderných procesorov

Registre

Spôsoby adresovania

Premenné a návestia

Symbolické konštanty

Inštrukčný súbor

Segmentové direktívy

Moduly

Služby operačného systému MS-DOS

Služby operačného systému Windows 95/98/NT/XP

Systémová úroveň vstupu a výstupu

Prostriedky pre prípravu programu

Registre | Segmentové registre
Vydala Žilinská univerzita v Žiline, 2000. ISBN 80-7100-723-4.
Otázky a pripomienky môžete poslať autorke.
Naposledy upravené 14.9.2007.