Također poznat kao registar adresa instrukcija, PC ili pokazivač instrukcija, programski brojač je vrsta registra koji se nalazi u središnjoj procesorskoj jedinici (CPU) računalnog sustava. Svrha brojača je osigurati privremeni smještaj za sljedeću instrukciju koja će se izvršiti u nizu instrukcija. Kako se jedna instrukcija dohvaća i implementira, programski brojač postavlja sljedeću instrukciju u niz, učinkovito minimizirajući kašnjenja u izvršavanju koraka potrebnih za dovršetak zadatka. Uvijek pokazujući na sljedeću instrukciju, proces se nastavlja učinkovito napredovati.
Iako postoje varijacije, rad programskog brojača unutar središnje procesorske jedinice relativno je jednostavan. Kada se naruči novi zadatak, upute potrebne za upravljanje tim zadatkom dohvaćaju se iz memorije. To se obično postiže tako da CPU kreira adresu koja se zatim šalje u memoriju, koja odgovara slanjem instrukcija natrag jedinici kao podataka putem podatkovne sabirnice.
Programski brojač, kao jedan od nekoliko različitih registara ugrađenih u CPU, obavlja zadatak primanja svake od instrukcija u nizu zadataka. Održavanje logičkog slijeda pojednostavljuje napredovanje prema svakom koraku, u konačnici dovršavajući zadatak. Ova logička progresija održava se pokazivanjem na podatke koji će se sljedeći koristiti čak i kada su prethodni podaci u upotrebi, a zatim brzim pokazivanjem na sljedeće podatke u nizu dok se svaka instrukcija izvršava redom.
Ovisno o konfiguraciji programskog brojača, registar zapravo može poslužiti kao pokazivač za više od jedne instrukcije uključene u dani proces koji se trenutno izvršava. Kod nekih dizajna registra, programski brojač ne pokazuje samo prema procesu koji je sljedeći u nizu, već i prema upravo objavljenoj instrukciji koja je sada u procesu implementacije. Smatra se da ovaj poseban dizajn pomaže u održavanju ravnoteže resursa, kao i da pomaže u zaštiti pomicanja instrukcija naprijed s višom razinom učinkovitosti.
Funkcija programskog brojača ključna je za uspješno izvršenje instrukcija uključenih u bilo koji zadatak. Ukazujući put prema svakoj instrukciji u nizu, brojač pomaže osigurati logično izvršenje onih koraka koji u konačnici dovode do brzog i učinkovitog izvršavanja zadatka. Bez korištenja ove vrste registra, mogućnost da se slijed poremeti bila bi povećana, a šanse za dovršetak zadatka bile bi relativno male. Dodavanjem organizacije postepenom dovršavanju svih uputa, korak po korak, programski brojač služi kao kanal koji minimizira anomalije i održava proces napredujući kako treba.