8086.ru3. Средства управления памятью → 3.2 Регистровые структуры

3.2 Регистровые структуры

Во всех 16-разрядных процессорах используются программно доступные регистры общего (РОН) и специального назначения. Структура РОН зависит от структуры ЛА (рисунок 3.2). РОН в составе ЦП используются для хранения операндов, наиболее часто используемых при вычислениях, что сокращает количество обращений к ОП за операндами, а следовательно, позволяет повысить и производительность процессора. Чем больше емкость программно доступных РОН, тем больше промежуточных данных можно в них хранить без обращения к ОП. Также РОН можно использовать для хранения адресов при выполнении некоторых видов адресации (регистровая косвенная, базовая и т.п.) и для других целей.

Процессор МС68000. В процессоре МС68000 логический адрес размещается в двух 16-разрядных ячейках памяти. Поэтому РОН выполнены в виде 32-разрядных регистров, которые по назначению делятся на две группы по 8 регистров в каждой:

  • регистры данных D7-D0, позволяющие хранить как слова двойной длины, так и словные операнды, а в младшем слове разрешена обработка и байтов (в формате команды два бита указывают на размер операнда). Регистры данных используются при выполнении арифметико-логических преобразований, операций сдвига и т.п.;
  • регистры адреса А7-А0 используются для хранения ЛА для некоторых видов адресации, при этом регистр А7 выполняет функции указателя стека, а так как процессор работает в двух режимах - системном и пользовательском, то таких регистров в составе РОН два: А7 и А7', которые выбираются автоматически в зависимости от режима работы.

Кроме этих регистров, в состав процессора входит 32-разрядный программный счетчик РС и 16-разрядный регистр слова состояния SR.

В состав процессора Z8001 входит шестнадцать 16-разрядных РОН для адресации к словам, из которых R7-R0 можно использовать для выполнения байтных команд. Кроме того, все регистры образуют восемь регистровых пар RR0-RR14, которые служат для хранения адресов, так как формат ЛА 32-разрядный. Выбор регистровой пары осуществляется автоматически при обработке соответствующего вида адресации.

Z8001 также работает в двух режимах работы: системном и пользовательском, поэтому в состав РОН входят два указателя стека RR14 и RR14', выбираемых автоматически в зависимости от режима работы процессора.

Программный счетчик РС 32-разрядный занимает два регистра, один регистр используется в качестве слова состояния процессора SR и два регистра PSAP используются в качестве указателя области состояния программ.

Необходимость расширения РОН до шестнадцати обусловлена:

  • хранением в РОН 32-разрядных логических адресов;
  • при выполнении арифметико-логических преобразований результат операции помещается только в РОН, что требует увеличения их количества для сокращения пересылок между РОН и ОП (в формате команды нет бита направления записи результата).

В архитектуре процессора фирмы DEC предусмотрено 8 программно доступных регистров, из которых R6 и R6' используются как указатели стеков системного и пользовательского режимов, а регистр R7 - в качестве программного счетчика РС, что позволяет реализовать 4 дополнительных вида адресации (непосредственную, абсолютную, относительную по РС, косвенную относительную по РС) на основе прямой и косвенной автоинкрементной и индексной адресаций.

Программно доступные регистры R0-R5 используются для хранения операндов, адресов, индексов, счетчиков циклов и не имеют жесткой привязки по назначению. В процессоре выполнение байтовых операций возможно только с младшим байтом РОН.

Программно недоступные регистры R8-R15 предназначены для выполнения определенных функций для временного хранения исполнительного ЛА, входных операндов, промежуточных результатов и других целей.

Процессор Intel 8086 имеет 14 16-разрядных регистров, которые можно разделить на 4 набора: 3 набора по четыре программно доступных регистра и два программно недоступных: указатель команды IP и слово состояния процессора SR.

РОНы в процессоре i8086 представлены 16-разрядными регистрами АХ, ВХ, СХ и DX, которые можно использовать как словные, так и как байтные (AL, BL, CL, DL - младший байт, AH, BH, CH, DH - старший байт). Адресация к регистрам показана ниже.

100AH000ALAX000Аккумулятор
101CH001CLCX001Счетчик
110DH010DLDX010Данные
111BH011BLBX011База
SP100Указатель стека
BP101Указатель базы
SI110Индекс источника
DI111Индекс приемника

В некоторых командах функции РОН специализированы, например, регистр СХ является счетчиком в цепочечных командах.

Вторую группу составляют указательные и индексные регистры (SP, BP, SI, DI), которые обычно содержат внутрисегментные смещения.

Третью группу регистров составляют сегментные регистры CS, DS, SS и ES, каждый из которых идентифицирует конкретный текущий сегмент и функции их совершенно различны: CS - идентифицирует текущий сегмент кода (программы), DS - текущий сегмент данных, SS - текущий сегмент стека, ES - текущий дополнительный сегмент (данных). Таким образом, логический адрес в команде задает только смещение в сегменте, а требуемый текущий сегментный регистр определяется командой по умолчанию или задается в команде. Например, выборка всех команд осуществляется из текущего сегмента кода CS, а смещение задается в указателе команды IP. Базовые адреса операндов хранятся в текущих сегментах данных DS или ES, при стековых командах в сегменте стека SS, а смещение задается в команде или хранится в одном из РОН.

Такое разделение на специализированные сегментные регистры позволяет программе использовать до четырех сегментов емкостью до 64 Кбайт каждый, что в первых моделях процессоров было вполне достаточным, и перезагрузка сегментных регистров новыми базовыми адресами выполнялась редко.