Блок регистров

Микропроцессор К580 содержит программно-доступные 8-разрядные регистры общего назначения (РОН) и 16-разрядные специализированные регистры: счетчик команд и регистр-указатель стека. Кроме того, имеются непосредственно недоступные программе регистры: 8-разрядные регистры временного хранения W, Z и 16-разрядный регистр адреса.

Регистры общего назначения B, C, D, E, H, L используются для хранения операндов, промежуточных и конечных результатов, а также адресов и индексов при косвенной и индексной адресации. Для выполнения операций со словами двойной длины и операций формирования и пересылок двухбайтных адресов имеется возможность оперировать с содержимым пар регистров BC, DE, HL.

Особенность блока регистров МП является наличие в его составе схемы инкремента/декремента (INC/DEC), которая производит над содержимым счетчика команд (PC) и регистра-указателя стека (SP) операцию прибавления/вычитания 1 без привлечения АЛУ.

Счетчик команд (16-ти разрядный регистр) предназначен для хранения адреса команды; после выборки из оперативной памяти текущей команды содержимое счетчика увеличивается на единицу и таким образом формируется адрес очередной команды (при отсутствии безусловных и условных переходов).

Указатель стека (16-ти разрядный регистр) служит для адресации стековой памяти. В МП К580 используется «перевернутый» стек, т.е. при передаче в стек слова значение указателя стека (адрес вершины стека) уменьшается, а при извлечении слова из стека увеличивается.

Стековая адресация широко используется при работе с подпрограммами и в процедурах прерывания.

Для кратковременного хранения некоторых операндов и результатов выполнения операций служат регистры временного хранения данных W, Z. Использование регистров временного хранения позволяет МП за один цикл выполнения команды реализовать, например, такую операцию, как обмен содержимым двух регистров.

В состав блока регистров входит регистр адреса памяти (RA), предназначенный для хранения адреса ячейки памяти, в которой записана текущая команда. Регистр адреса недоступен программисту. Однако любая пара регистров (BC, DE, HL) может быть использована для задания адресов команд и данных в программе.