Виды машинных циклов. Слово состояния процессора. Слово состояния МП КР580ВМ80А. Ввод-вывод в режиме прерывания. Алгоритм обслуживания прерываний, страница 22

3.2.3. Специальные регистры

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

Буферные регистры БР1 и  БР2 нужны для временного хранения данных. Например, если в АЛУ должна выполниться операция над двумя последовательно поступающими операндами, как минимум один из них необходимо временно хранить, чтобы на входы АЛУ они оба поступили одновременно (АЛУ устройств хранения не имеет). В качестве такого устройства временного хранения данных и используется буферный регистр БР1. Так как результат операции, выполняемой в АЛУ, помещается на внутреннюю шину, необходимо исключить попадание этого результата на входы АЛУ еще в процессе выполнения текущей команды (см. рис.3.1). Это обеспечивается буферными регистрами БР1 и БР2. Оба регистра 8-разрядные.

Восьмиразрядный буфер данных БД  служит для обеспечения передачи данных с внутренней шины МП на ШД микроЭВМ и наоборот в необходимые моменты времени. Он также при необходимости (например, в режиме прямого доступа внешнего устройства к памяти) отключает внутреннюю шину от ШД. Регистр адреса в этих режимах отключается от ША с помощью буфера адреса БА.

Счетчик команд СК обеспечивает последовательный выбор ячеек памяти, содержимое которых поочередно помещается в МП. Когда микропроцессор начинает работать, в СК загружается адрес первой ячейки памяти, с которой начинается программа. Это должно обеспечиваться аппаратным способом. Если загрузка СК начальным адресом специальными средствами не предусматривается, то в момент включения МП в счетчике команд автоматически устанавливается адрес нулевой ячейки памяти. Содержимое СК передается в регистр адреса РА, который через буфер адреса БА выставляет этот адрес на шину адреса микроЭВМ. По сигналам управления МП содержимое ячейки памяти по этому адресу выставляется на ШД и загружается микропроцессором в регистр команд РК. После расшифровки кода операции и начала выполнения команды, содержимое счетчика команд автоматически увеличивается на единицу (об этом "заботится" специальная схема инкрементирования/декрементирования, т.е. увеличения/уменьшения на единицу). То есть еще в процессе обработки микропроцессором содержимого ячейки по текущему адресу счетчик команд уже содержит адрес следующей ячейки памяти. Однако содержимое регистра адреса еще остается прежним, и будет сохраняться таким до тех пор, пока не потребуется извлечь содержимое следующей ячейки памяти. Это сделано таким образом из следующих соображений. Некоторые команды или режимы МП изменяют последовательный ход программы, то есть после выполнения определенной команды микропроцессор переходит к извлечению содержимого не следующей по порядку ячейки, а ячейки, расположенной в другой области памяти (например, при переходе к подпрограмме или обработке прерываний). При этом сначала содержимое счетчика команд – а это адрес следующей по порядку ячейки памяти основной программы - сохраняется в специальной области памяти (в так называемом стеке), а затем в него загружается адрес ячейки памяти, с которой начинается подпрограмма. Этим достигается запоминание адреса возврата микропроцессора в основную программу после окончания выполнения подпрограммы (она обязательно заканчивается командой возврата). Таким образом, программисту нет необходимости запоминать адрес возврата из подпрограммы и указывать его в командах возврата. В дополнение к выше сказанному можно отметить, что и некоторые другие команды могут принудительно изменять содержимое СК (команды безусловных и условных переходов).