• Счетчик команд PCLи РСLATH имеет разрядность 13 бит. Младший байт счетчика (PCL) доступен для чтения и записи и находится в регистре 02h. Старший байт счетчика команд не может быть напрямую записан или считан и берется из регистра РСLATH, адрес которого ОАh. Содержимое РСLATH передается в старший байт счетчика команд, когда он загружается новым значением.
В зависимости от того, загружается ли в счетчик команд новое значение во время выполнения команд САLL, GОТО, или в младший байт счетчика команд (РСL) производится запись, - старшие биты счетчика команд загружаются из РСLATH разными способами
Команды САLL и GОТО оперируют 11-разрядным адресным диапазоном, достаточным для смещения в пределах страницы программной памяти объемом 2К слов. С целью обеспечения возможности расширения памяти команд для будущих моделей МК предусмотрена загрузка двух старших бит счетчика команд из регистра РСLATH <4:3>. При использовании команд СALL и GОТО пользователь должен убедиться в том, что эти страничные биты запрограммированы для выхода на нужную страницу. При выполнении команды САLL или выполнении прерывания весь 13-битный счетчик команд помещается в стек, поэтому для возвращения из подпрограммы не нужны манипуляции с разрядами РСLATH <4:3>.
Возможность выполнять арифметические операции непосредственно над счетчиком команд позволяет очень быстро и эффективно осуществлять табличные преобразования в РIС-контроллерах.
Микроконтроллеры подгруппы РIС16F8Х имеют восьмиуровневый аппаратный стек шириной 13 бит. Текущее значение счетчика команд посылается в стек, когда выполняется команда САLL или производится обработка прерывания. При выполнении процедуры возврата из подпрограммы (команды RETLW и т.д.) содержимое счетчика команд восстанавливается из стека. Регистр РСLATH при операциях со стеком не изменяется.
Стек работает как циклический буфер. Следовательно, после того как стек был загружен 8 раз, девятая загрузка перепишет значение первой. Десятая загрузка перепишет вторую и т.д. Если стек был выгружен 9 раз, счетчик команд становится таким же, как после первой выгрузки.
Признаков положения стека в контроллере не предусмотрено, поэтому пользователь должен самостоятельно следить за уровнем вложения подпрограмм.
Прямая и косвенная адресации. Прямая адресация.
Когда производится прямая 9-битная адресация, младшие 7 бит берутся как прямой адрес из кода операции, а два бита указателя страниц (RР1,RРО) из регистра статуса (ОЗh).