Programski števec je znan tudi kot register naslovov navodil, računalnik ali kazalec navodil, je vrsta registra, ki se nahaja v centralni procesni enoti (CPU) računalniškega sistema. Namen števca je zagotoviti začasno ohišje za naslednje navodilo, ki se izvaja v nizu navodil. Ko se eno navodilo pridobi in izvede, programski števec postavi v čakalno vrsto naslednje navodilo v nizu, kar učinkovito zmanjša zamude pri izvajanju korakov, potrebnih za dokončanje naloge. Če vedno pokažete na naslednje navodilo, se proces učinkovito premika naprej.
Čeprav obstajajo razlike, je delovanje programskega števca znotraj centralne procesne enote razmeroma preprosto. Ko je naročena nova naloga, se navodila, potrebna za upravljanje te naloge, pridobijo iz pomnilnika. To se običajno doseže tako, da CPU ustvari naslov, ki se nato pošlje v pomnilnik, ki se odzove tako, da pošlje navodila nazaj enoti kot podatke preko podatkovnega vodila.
Programski števec kot eden od več različnih registrov, vgrajenih v CPE, opravlja nalogo sprejemanja vsakega od navodil v zaporedju opravil. Ohranjanje logičnega zaporedja poenostavi napredovanje do vsakega koraka in na koncu dokonča nalogo. To logično napredovanje se vzdržuje tako, da pokažete na podatke, ki jih je treba uporabiti naprej, tudi ko so prejšnji podatki v uporabi, nato pa hitro pokažete na naslednje podatke v zaporedju, ko se vsako navodilo izvaja po vrsti.
Odvisno od konfiguracije programskega števca lahko register dejansko služi kot kazalec za več kot eno navodilo, ki je vključeno v dani proces, ki se trenutno izvaja. Pri nekaterih zasnovah registrov programski števec ne kaže le na proces, ki je naslednji v zaporedju, ampak tudi na pravkar izdano navodilo, ki je zdaj v procesu izvajanja. Ta posebna zasnova naj bi pomagala pri ohranjanju ravnovesja virov in pomagala zaščititi premikanje navodil naprej z višjo stopnjo učinkovitosti.
Funkcija programskega števca je bistvenega pomena za uspešno izvajanje navodil, vključenih v katero koli nalogo. Z usmerjanjem poti proti vsakemu navodilu v zaporedju števec pomaga zagotoviti logično izvedbo tistih korakov, ki na koncu vodijo do hitrega in učinkovitega dokončanja naloge. Brez uporabe te vrste registra bi se povečala možnost za prekinitev zaporedja, možnosti za dokončanje naloge pa bi bile relativno majhne. Z dodajanjem organizacije postopnemu izpolnjevanju vseh navodil po korakih, programski števec služi kot vod, ki minimizira anomalije in skrbi za pravilno napredovanje procesa.