Указатель команд (инструкций)
(IP – Instruction Pointer)
Хранит относительный адрес, по которому в RAM находится инструкция, следующая за исполняемой. Фактически этот регистр «следит» за ходом выполнения программы. Наращивание адреса выполняет CPU, в зависимости от длины текущей команды. Значение, хранящееся в IP, может изменяться в зависимости от структуры программы. Команды условных и безусловных переходов, циклов, вызова подпрограмм и т.д. изменяют содержимое IP, осуществляя переходы к требуемой точке команды. Разрядность регистра IP - 16 бит.
Регистры указатели
К ним относятся индексные регистры:
SI – Source (Источник)
DI – Destination (Приемник)
Используются в основном при перемещении цепочек данных (многобайтных последовательностей произвольной длины), но могут использоваться и произвольным образом. Основное их назначение – хранить индексы (смещения) относительно некоторой базы, (т.е., начала массива) при выборке операндов из памяти.
Регистр SI – регистр индекса источника (source index register). Он содержит относительный адрес начала цепочки, которую следует переместить.
Регистр DI – регистр индекса приемника (destination index register). Содержит относительный адрес, по которому нужно переместить цепочку. Число перемещаемых байт обычно хранится в регистре CX (счетчике). Кроме операций по перемещению цепочек данных, индексные регистры используют и для адресации внутри массивов числовых данных. Адрес базы при этом может находиться в базовых регистрах BX или BP (base pointer). Т.о., в этих регистрах хранится сегментная часть адреса.
Указатель стека
(SP – Stack Pointer)
Используется только как указатель вершины стека. В любом случае регистры BP и SP используются для указания на начало области памяти отведенной под стек, т.к. BP выступает как указатель базы при работе с данными в стековой структуре.
Сегментные регистры
Эти регистры используются только! при работе с адресами. Это важнейшие элементы в архитектуре CPU, т.к. обеспечивают 20-ти разрядную адресацию адресного пространства с помощью 16-ти разрядных операндов.
CS (Code Segment Register)
Регистр сегмента кодов. В нем хранится начальный адрес сегмента содержащего команды (инструкции). В сочетании с регистром IP (счетчиком команд) образует полный адрес текущей выполняемой инструкции.
DS (Data Segment Register)
Регистр сегмента данных. Обычно указывает начало область памяти, отведенной под данные. В сочетании с регистрами DI, SI или BX может использоваться для доступа к определенным байтам или словам внутри области данных.
SS (Stack Segment Register)
Регистр сегмента стека. В сочетании с регистром SP указывает на текущее хранимое в стеке число. Может также использоваться и в паре с регистром BP при выполнении некоторых инструкций.
ES (Extra Segment Register)
Регистр дополнительного сегмента, отведенный для нужд программиста. Обычно используется в инструкциях по обработке цепочек.
Регистры данных регистры-указатели сегментные регистры
AH |
AL |
аккумулятор |
SI |
источник |
CS |
команд |
BH |
BL |
базовый |
DI |
приемник |
DS |
данных |
CH |
CL |
счетчик |
BP |
указ.базы |
ES |
дополн.дан. |
DH |
DL |
данных |
SP |
указ.стека |
SS |
стека |