Программная модель 32-разрядных процессоров i80x86
На рис. 4 представлена программная модель 32-разрядных процессоров i80x86 (реальный режим). Все регистры, не имеющие в своём имени начальную букву E (Extended), составляли программную модель базового процессора i8086 (за исключением двух новых сегментных регистров fs и gs). Младшие 8- или 16-битные регистры, имеющие имена, могут использоваться самостоятельно. Первую группу из 8-ми регистров (eax, ebx, esp) составляют регистры общего назначения (РОН), использующиеся для хранения данных или адресов. Вместе с тем, каждый из РОН в некоторых командах выполняет специальные функции, что нашло отражение в названии регистров. Eax/ax/ah/al – аккумулятор, используется в подавляющем числе команд. Часто применяемые команды, использующие данный регистр, имеют укороченный формат. Ebx/bx/bh/bl – базовый регистр. Получил своё название из-за выполняемой функции базовой адресации (регистр bx) в процессоре i8086. В старших моделях процессоров базовая адресация вводится любым расширенным РОН. Ecx/cx/ch/cl – регистр, используется как счётчик числа повторений в командах сдвига, в циклических и в строковых командах. Edx/dx/dh/dl – регистр данных, выполняющий функцию арифметического расширителя в командах умножения и деления. Индексные регистры Esi/si и Edi/di получили своё название из-за одноимённой адресации в базовом процессоре i8086 (регистры si и di), где содержат величину смещения данных и команд от начала базового адреса соответствующего сегмента. В старших моделях процессоров индексная адресация вводится любым расширенным РОН. В процессорах i80x86 имеется четыре типа сегментных регистра, которые в IBM PC используются по умолчанию в соответствии с их функциональной специализацией. CS – code segment – содержит адрес сегмента кода программы. Логический адрес команды определяется указателем CS: IP, где IP – instruction pointer – программный счётчик.
Рис. 4. Регистры 32-разрядных процессоров i80x86
DS – date segment - содержит сегментную часть адресного указателя данных DS: EA, где EA – effective address - адресное выражение, определяющее смещение переменной в памяти данных. Адресное выражение не должно включать имя регистра Ebp/bp. SS – stack segment – содержит сегментную часть адресного указателя стека SS: SP, где SP – указатель вершины стека. Стек можно также адресовать с использованием адресации, аналогичной сегменту данных SS: EA, где EA – адресное выражение, включающее имя регистра Ebp/bp. ES – extra segment – дополнительный сегмент данных, используется для адресации строки-приёмника в строковых командах. Для адресации других дополнительных сегментов данных предназначены регистры GS и FS. Назначение сегментных регистров, обусловленное их функциональной специализацией, а также возможность их переназначения с помощью префикса, поясняется в табл. 3. Регистр флагов является специальным регистром, в котором хранится слово состояние программы и процессора (Program Status Word – PSW). Существует два основных типа флагов: управляющие флаги и флаги состояния.
Таблица 3
|