Cтраница 4
Счетчик команд указывает, какая команда подлежит выполнению. [46]
Счетчик команд PCL и PCLATH имеет разрядность 13 бит. Старший байт счетчика команд не может быть напрямую записан или считан и берется из регистра PCLATH ( PC latch high), адрес которого OAh. Содержимое PCLATH передается в старший байт счетчика команд, когда он загружается новым значением. [47]
Счетчик команд CI ( порядковый счетчик адреса команд), содержимое которого при нормальной работе увеличивается на единицу в конце каждого основного цикла под действием сигналов ( Я), обеспечивая, таким образом, выполнение команд в том порядке, в котором они записаны в программе. Содержимое счетчика команд является номером следующей принимаемой к исполнению команды. [48]
Счетчик команд PC имеет длину 12 разрядов, что позволяет обращаться к управляющей памяти емкостью 4К байт. Управляющая память разбита на два независимых банка МВО ( Memory Bank 0) и МВ1 по 2К байт каждый, которые адресуются с помощью старшего разряда PC. Данный разряд программного счетчика отделен от 11 младших и никогда не изменяет своего значения при последовательной выборке команд. Следовательно, непрерывный переход из одного банка управляющей памяти в другой невозможен, поэтому используются команды передачи управления, которые содержат прямой 11 -разрядный адрес внутри банка. [49]
Двенадцэтиразрядный счетчик команд ( СК) формирует текущий адрес команды в программной памяти. Содержимое СК увеличивается на 1 после выборки каждого байта команды. При выполнении команд условных, безусловных переходов, вызова подпрограмм и прерываний содержимое СК может быть полностью заменено. Старший разряд СК изменяется только программно. Счетчик команд разбит на две части: разряды 0 - 7 - младшая часть СК, разряды 8 - 11 - старшая. Регистр команд предназначен для записи и хранения кодов команд, передаваемых через внутреннюю шину с выхода ППЗУ или из порта РО при внешнем ЗУ. [50]
Вначале счетчик команд устанавливается на некоторый выделенный регистр. Обычно исходное содержимое регистров памяти не состоит из одних нулей, так как в память уже введена программа. [51]
Почему счетчик команд должен обеспечивать адресацию любой области памяти, даже если программа не использует все области. [52]
Содержимое счетчика команд и содержимое разрядов 4 - 7 регистра состояний заносится в стек. Указатель стека ( содержимое разрядов 0 - 2 регистра состояний) инкрементируется Управление программой передается по адресу, указанному в данной команде. Содержимое разряда 11 счетчика команд определяется предшествующей командой SEL Mb. После возвращения из подпро граммы выполнение программы продолжается с команды, следующей за командой CALL Возврат из подпрограммы обслуживания прерываний без восстановления содержимого регистра состояний. Содержимое указателя стека ( разряды О-2 регистра состояний) дек-рементируется. Содержимое счетчика команд восстанавливается из стека. Содержимое разрядов 4 - 7 регистра состояли не восстанавливается Возврат из подпрограммы обслуживания прерывании с восстановлением содержимого регистра состояний. [53]
![]() |
Структурная схема КР580ВМ80А. [54] |
Содержимое счетчика команд автоматически увеличивается после выборки каждого байта команды. Шестнадцатиразрядный указатель стека содержит начальный адрес памяти, используемый для хранения и восстановления содержимого программно-доступных регистров ЦПУ, Содержимое указателя стека уменьшается, когда данные загружаются в стек, и увеличивается, когда данные выбираются из стека. Восьмиразрядные регистры общего назначения В, С, D, Е, Н, L могут применяться как накопители ( обрабатываемые данные находятся в самом регистре) и указатели ( 16-разрядный адрес операнда определяется содержимым пары регистров), Регистры временного хранения W, Z используются для приема и временного запоминания второго и третьего байтов команд переходов, передаваемых с внутренней магистрали ЦПУ в счетчик команд. Эти регистры являются программно-недоступными. [55]
Содержимое счетчика команд СчК задает адрес следующей команде, которая должна быть выбрана из памяти. [56]