Поиск по сайту:


«Assembler IBM PC 5. Программная модель 32-разрядных процессоров i80x86»

Файл: 4 КБ
Поделиться:

На рис. 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

Назначения сегментных регистров

Регистры, использующиеся для вычисления эффективного адреса ЕА

Назначение сегментных регистров

По умолчанию

Возможные переназначения с помощью префикса

Eip/ip – адрес команды в сегменте кода

Esp/sp – указатель вершины стека в сегменте стека

EA операнда в сегменте стека с использованием регистра ebp/bp

EA операнда в сегменте данных без использования регистра ebp/bp

esi/si – указатель элемента строки – источника

edi/di – указатель элемента строки – приёмника

cs

ss

ss

 

ds

 

ds

es

Нет

Нет

cs, ds, es

 

cs, ds, es

 

cs, ds, es

Нет

 

 

¨  Управляющие флаги

Df – Direction Fl – флаг направления обработки элементов строки при выполнении строковых команд. При Df = 0 осуществляется просмотр строки вперёд, в сторону увеличения значения их адреса, при Df = 1 – просмотр назад.

If – Interrupt Fl – флаг разрешения аппаратных прерываний, считается установленным, если If = 1.

Tf – Trace Fl – флаг трассировки, используется в отладчиках для осуществления пошагового выполнения команд программы. Если Tf = 1, то после выполнения каждой команды процессор реализует процедуру прерывания Int 1.

¨  Флаги состояний (рис. 5)

Cf – Carry Fl – перенос из старшего разряда регистра результата при сложении или заём для старшего разряда при вычитании.

Of – Overflow – арифметическое переполнение результата при сложении или вычитании чисел в дополнительном коде. При операциях с беззнаковыми числами признаком переполнения является значение флагаCf (1 – есть переполнение, 0 – нет).

 

 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 5. Механизм формирования флагов условий

 

Sf – Sign Fl – флаг знака результата.

Zf – Zero Fl – флаг нулевого результата для логических и арифметических операций.

Af – Auxiliary Fl – флаг дополнительного переноса (займа), используется при операциях с BCD-числами.

Pf – Parity Fl – флаг паритета, фиксирует наличие чётного числа "1" в младшем байте результата.