Основни регистри в i86-класа


Категория на документа: Информатика


Основни регистри в i86-класа

1. Регистри с общо предназначение. Универсални регистри.
а) ЕАХ регистъра или еах. Това е случая, когато регистъра е 32-а разряда. Цялата фамилия компютри в i86 са програмно съвместими от долу на горе, което означава, че програми създадени за по-малките модели трябва да работят нормално и в големите компютри, но не и обратното. Затова се получава, че при големите компютри се имитират малките модели. За такъв случай от целия регистър ще се използва само половинката, т.е. 0-15. Тази половинка се нарича АХ (ах) регистър. Е-extended АХ - разширен регистър (32 бита), а АХ е само 16 бита. AH и AL са делението на АХ регистъра. Н-High - старши, L-low - младши, а абревиатурата А идва от Accumulator. Този регистър се използва само при опция умножение / деление, входно/изходни операции, а също така и при едноадресни инструкции.
б) Следващия регистър е ЕВХ (ebx). Половинката от него ще бъде - BX (bx). B = Base. Този регистър се използва като указател на базовия (началния) адрес при адресация на данните.
в) Регистър ЕСХ (есх), съответно СХ (сх). Тук С=Counter, който означава брояч. Този регистър се използва за отброяване на цикли, повторения и измествания при умножение.
г) Регистър EDX (edx); DX (dx); D = Data (Данни) - в него се поместват данни при умножение, деление и входно/изходни операции.
д) Регистър ESI (esi); SI (si); Тук вече няма адресация на байтовете - I = Index, S = Source. Това е индексен регистър-източник. Използва се при индексиране на операндите при обработка на низове от данни.
е) Регистър EDI (edi); DI (di); Destination Index - Индексен регистър-приемник. Този регистър се използва също за индексация на операндите когато се извършва обработка на низове от данни.
ж) Регистър ЕВР (ebp); BP (bp) Base Pointer - показва началния адрес на стека.
Def.: Стек - начин на организация на информацията в паметта.
* Предполагаме, че паметта е разделена на клетки, които се попълват с информация. Организацията на паметта при стека се нарича LIFO (Last In First Out).
з) регистър ESP (esp); SP (sp); Stack Pointer - Указател на стека - показва първа свободна клетка в паметта, принадлежаща на стека.
2. Сегментни регистри. Те са 16 разрядни независимо от модела на компютъра:
CS; cs;
SS; ss;
DS; ds;
ES; es;
FS; fs;
GS; gs;
15 0
Първите 4 регистъра се използват и при 16 и при 32 битови компютри, а последните 2 - само при 32 битови компютри.

Сегмент: сегмент наричаме част от паметта използвана за текущата задача. Той определя базовият адрес от където се записва и съответната информация.

* CS - Code Segment - кода на програмата. Това е такъв сегмент, който съхранява програмата написана на машинен език, а CS съдържа началния адрес на сегмента, който съхранява тази програма.
* SS - Stack Segment - Този регистър съхранява базовият адрес на сегмента, който се използва за стекови операции.
* DS - Data Segment - Този регистър съдържа базовият адрес на сегмента, където се разполагат данни използвани от текущата машинна програма.
* ES - Extra Segment - съдържа базовият адрес на допълнителният сегмент за данни.
* Последните два регистъра - FS, GS се използват като допълнителни сегментни регистри за данни, които се използват в "защитен режим".
3. Към третата група регистри можем да споменем : Програмен Брояч, наричан още EIP, IP, т.е. Instruction Pointer - който също използва само 0-15-я бит от 32-та бита.
4. Флагови регистри - EFLAGS - таблица 1.
При този регистър повечето битове се използват самостоятелно и служат като указатели (индикатори) за работата на компютъра и се използват от ОС или части от нея - BIOS.
* 0-левия бит при всички модели се означава с C = Carry. Този бит се установява в 1-ца когато възниква преносът при аритметични инструкции или при изместване или при ротации. (Ротацията представлява изместване на старшия бит зад най-младшия - т.е. 101011 -> 010111.
* 2-рия бит P = Parity - четност. Този бит се установява в 1 при четен брой единици в Байта и служи при контрол на предаваната информация по четност. В приемника има схеми, които преобразуват информацията, т.е. сравняват четността на 1-ците, контролните разряди - и ако те съвпадат следователно няма грешка, а ако се различават значи е възникнала грешка при предаването.
* 4-ти бит A = Auxiliary - Допълнителен. Той се използва за посочване на преноса при десетичната аритметика или ако се взема заем от предишната тетрада.
* 6-ти бит - Z = Zero. Този флаг се установява в 1, ако се получава нулев резултат при някаква операция.
* 7-ми бит - S = Sign. Установява се в 1, ако при изпълнение на текущата операция се получи отрицателен резултат.
* 8-ми бит - T = Trap. Този флаг се използва от програми, които извършват настройка на текущата програма, задача. Когато този бит е установен в 1 се предизвиква спиране на текущата програма след всяка изпълнена машинна инструкция, т.е. се предизвиква стъпково изпълнение на програмата, необходимо при настройка на програмата, тъй като при всяка стъпка се анализира получения до този момент резултат, и по такъв начин се проверява дали настройваната програма е съставена правилно.
* 9-ти бит I = Interrupt. Ако този бит е 1 процесорът възприема заявки за прекъсване от входно/изходните устройства. Ако този бит е 0 заявките от входно/изходните устройства не се възприемат а се блокират (маскират).
* 10-ти бит - D = Direction - Направление. Този флаг показва в какъв ред трябва да се обработват низовете от данни. Ако той е 0 се извършва автоматичното инкрементиране (увеличение) на съдържанието на рег. ESI и EDI. Ако флагът е в 1 се извършва автоматично декрементиране (намаляване) на съдържанието на тези регистри.
* 11-ти бит. O = Overflow - препълване, или работа с твърде големи числа.
* 12-ти и 13-ти битове се разглеждат заедно и ги няма в малките модели, а се употребяват от 286 нагоре. IOP - Input Output Privilege - тези 2-флага показват привилегированото ниво на съответната входно/изходна операция при защитен режим. Най-високата привилегия е 0-левата, а най-ниската 3-тата.
* 14-ти бит. NT = Nested Task - вмъкната програма. Този флаг се установява в 1 в защитен режим, когато се извършва преход от основната програма, към някоя подпрограма с инструкцията Call. Когато се извършва обратният преход от подпрограмата към основната програма този флаг се установява в 0.
* 16-ти бит. RF = Resume Flag. Този флаг се установява в 1-ца от средствата за настройка на програмите, когато трбява да бъдат блокирани възникващите грешки, т.е. когато на тях не се обръща внимание.
* 17-ти бит. VM = Virtual Mode - Виртуален режим - Този флаг се установява в 1 когато процесорът работи във виртуален режим.
* 18-ти бит. AC = Alignment Check. Флаг за адресно изравняване. Адресно изравняване означава когато разполагаме думите, за 1 дума използваме 2 клетки.
o При разполагане на думи на 16 битов формат, адресите завършват на 0, т.е. за една 16 битова дума адресът завършва с 1 нула, за двойна дума - с две нули, а за 32битова дума - четворна дума - с 3 нули, и точно тези нули се явяват адресното изравняване.
Ако този флаг е установен в 1 отчита се грешка при неправилното изравняване на думите, ако е 0 на грешка възникнала в резултат от неправилно изравняване не се обръща внимание.
* 19-ти бит. VIF = Virtual Interrupt Flag. Той има същият смисъл като 9-ти, само че при виртуален режим.
* 20-ти бит. VIP = Virtual Interrupt Pending = Допълнителен флаг за прекъсване във виртуален режим.



Сподели линка с приятел:





Яндекс.Метрика
Основни регистри в i86-класа 9 out of 10 based on 2 ratings. 2 user reviews.