Tuntud ka kui käsu aadresside register, arvuti või käsuosuti, on programmiloendur teatud tüüpi register, mis asub arvutisüsteemi keskseadmes (CPU). Loenduri eesmärk on pakkuda ajutist pesa järgmise käsu jaoks, mis tuleb käskude jadana täita. Kui üks käsk hangitakse ja rakendatakse, seab programmiloendur järjekorda stringi järgmise käsu, minimeerides tõhusalt viivitusi ülesande täitmiseks vajalike sammude täitmisel. Näidates alati järgmisele juhisele, liigub protsess tõhusalt edasi.
Kuigi on variatsioone, on programmiloenduri kasutamine keskseadmes suhteliselt lihtne. Uue ülesande tellimisel hangitakse mälust selle ülesande haldamiseks vajalikud juhised. Tavaliselt saavutatakse see nii, et CPU loob aadressi, mis saadetakse seejärel mällu, mis vastab, saates andmesiini kaudu juhised tagasi seadmele andmetena.
Programmi loendur kui üks mitmest erinevast CPU-sse sisseehitatud registrist täidab ülesannet võtta vastu kõik juhised tegumijärjestuses. Loogilise järjestuse säilitamine lihtsustab iga sammu edasiliikumist, lõpetades lõpuks ülesande. Seda loogilist edenemist säilitatakse, osutades andmetele, mida kasutatakse järgmisena, isegi kui eelmised andmed on kasutusel, ja osutades seejärel kiiresti jada järgmistele andmetele, kui iga käsku täidetakse kordamööda.
Olenevalt programmiloenduri konfiguratsioonist võib register tegelikult olla kursorina rohkem kui ühe käsu jaoks, mis on seotud antud hetkel täidetava protsessiga. Mõne registrikujunduse puhul ei osuta programmiloendur mitte ainult järjestuses järgmise protsessi poole, vaid ka äsja välja antud juhisele, mida praegu rakendatakse. Arvatakse, et see konkreetne konstruktsioon aitab säilitada ressursside tasakaalu ning aitab kaitsta juhiste edasiliikumist suurema tõhususega.
Programmi loenduri funktsioon on mis tahes ülesandega seotud juhiste edukaks täitmiseks hädavajalik. Näidates teed järjestuse iga käsu poole, aitab loendur tagada nende sammude loogilise täitmise, mis lõpuks viivad ülesande kiire ja tõhusa täitmiseni. Ilma seda tüüpi registri kasutamiseta suureneks jada katkemise võimalus ja ülesande täitmise võimalused oleksid suhteliselt väikesed. Lisades korralduse kõigi juhiste järkjärgulisele täitmisele, toimib programmiloendur kanalina, mis minimeerib kõrvalekaldeid ja hoiab protsessi korralikult edasi liikumas.