Сегмент кода (содержит команды программы)



НАБОР РЕГИСТРОВ МИКРОПРОЦЕССОРА

 

Пользовательские  регистры

- Регистры общего назначения

- Сегментные регистры

- Регистр флагов

- Регистр управления

 

Программная модель микропроцессора содержит 32 регистра, которые можно разделить на две группы:

- 16 пользовательских регистров;

- 16 системных регистров.

 

ПОЛЬЗОВАТЕЛЬСКИЕ РЕГИСТРЫ

 

Пользовательскими регистры называются потому, что программист может их использовать при разработке программ.

 

К пользовательским регистрам относятся:

 

1) восемь 32-битных регистров, которые могут использоваться программистами для хранения данных и адресов (регистры общего назначения)

eax/ax/ah/al

ebx/bx/bh/bl

edx/dx/dh/dl

ecx/cx/ch/cl

esi/si

edi/di

ebp/bp

esp/sp

2) шесть регистров сегментов: cs, ds, ss, es, fs, gs

3) регистр состояния (регистр флагов) eflags/flags;

4) регистр управления (регистр указателя команды) eip/ip.

 

** наклонной разделительной чертой обозначены части одного большого 32-разрядного регистра. Они могут использоваться в программе как отдельные объекты.

 

Благодаря этому поддерживается работоспособность программ, написанных для младших 16-разрядных моделей микропроцессоров фирмы Intel, начиная с i8086. Регистры микропроцессоров i486 и Pentium в основном 32-разрядные. Размерность у них больше, что и отражено в их обозначениях – они имеют приставку e (Extended).

 

Регистры общего назначения

 

Регистры общего назначения физически находятся в микропроцессоре внутри арифметико-логического устройства (АЛУ), поэтому их еще называют регистрами АЛУ.

 

eax/ax/ah/al (Accumulator register) — регистр-аккумулятор.

Применяется для хранения промежуточных данных.

 

ebx/bx/bh/bl (Base register) — базовый регистр.

Применяется для хранения базового адреса некоторого объекта в памяти.

 

ecx/cx/ch/cl (Count register) — регистр-счетчик.

Применяется в командах, производящих некоторые повторяющиеся действия.

Его использование часто неявно и скрыто в алгоритме работы соответствующей команды. Например, команда организации цикла loop кроме передачи управления команде, находящейся по некоторому адресу, анализирует и уменьшает на единицу значение регистра ecx/cx.

 

edx/dx/dh/dl (Data register) — регистр данных.

Применяется для хранения промежуточных данных.

 

Обратим внимание, можно использовать только весь регистр целиком (например, eax), младшую 16-битную часть (например, ax) и 8-битные части этих регистров (например, ah, al).

 

Регистры esi/si и edi/di используются для поддержки так называемых цепочечных операций, то есть операций, производящих последовательную обработку цепочек элементов (можно сравнить со строками в языкеPascal).

 

esi/si (Source Index register) — индекс источника.

Этот регистр в цепочечных операциях содержит текущий адрес элемента в цепочке-источнике (первоначальная строка).

 

edi/di(Destination Index register) — индекс приемника (получателя).

Этот регистр в цепочечных операциях содержит текущий адрес в цепочке-приемнике (результирующая строка).

 

Регистры ebp/bp и esp/sp предназначены для работы со стеком.

 

esp/sp (Stack Pointer register) — регистр указателя стека.

Содержит указатель вершины стека в текущем сегменте стека.

 

ebp/bp (Base Pointer register) — регистр указателя базы кадра стека.

Регистр предназначен для организации произвольного доступа к данным внутри стека.

 

Сегментные регистры

 

В программной модели микропроцессора имеется шесть сегментных регистров:

Cs, ss, ds, es, gs, fs.

 

Все сегментные регистры – 16-разрядные.

 

Их существование обусловлено спецификой организации и использования оперативной памяти: микропроцессоры Intel в любом режиме работы (реальный режим, защищенный режим) поддерживают сегментную модель организации оперативной памяти.

Она заключается в том, что микропроцессор аппаратно поддерживает структурную организацию программы в виде частей (фрагментов), которые называются сегментами. Соответственно, такая организация памяти называется сегментной.

 

Сегментные регистры предназначены для того, чтобы указать на сегменты, к которым программа имеет доступ в конкретный момент времени.

Фактически в этих регистрах содержатся адреса ячеек памяти, с которых начинаются соответствующие сегменты.

 

Микропроцессор поддерживает следующие типы сегментов.

 

Сегмент кода (содержит команды программы).

Для доступа к этому сегменту служит регистр

cs(code segment register) — сегментный регистр кода.

 

Он содержит адрес сегмента кода, к которому в данный момент имеет доступ микропроцессор.


Дата добавления: 2018-02-28; просмотров: 217; Мы поможем в написании вашей работы!






Мы поможем в написании ваших работ!