Счётчик команд (Program Counter)
Когда ты читаешь книгу, ты водишь пальцем по строчкам или используешь закладку, чтобы не забыть, на каком месте остановился. Процессору тоже нужна такая «закладка», ведь программа может состоять из тысяч инструкций, расположенных в памяти друг за другом.
Эту роль выполняет Счётчик команд (Program Counter, или просто PC). Это специальный регистр, который всегда хранит внутри себя адрес той ячейки памяти (в ПЗУ), где лежит следующая инструкция.
По умолчанию Счётчик команд работает очень просто: после каждого такта процессора он делает шаг вперед (прибавляет к своему значению +1 или +2). Прочитал нулевую строчку — перешел к первой, прочитал первую — перешел ко второй. Но иногда программе нужно перескочить в другое место (например, если начался цикл). В этот момент процессор посылает Счётчику команд новый адрес, перезаписывая его значение, и чтение кода продолжается уже с совершенно нового места.
Практический пример. Проследим за счётчиком команд при выполнении простой программы: ADD 10, STA 20, HLT. Изначально PC=0 — процессор читает ADD 10 из нулевой ячейки ROM. PC увеличивается до 1 — читается STA 20. PC=2 — читается HLT. Если бы второй командой был JMP 0, то после её выполнения PC принудительно сбросился бы в 0, и ADD 10 выполнилась бы снова — получился бы бесконечный цикл. Счётчик команд и инструкции перехода — это фундамент любых циклов в программах.