Hoofdmenu openen
Voorpaneel van de in 1952 geïntroduceerd IBM 701-computer. De lichtjes in midden laten de inhoud van de verschillende registers zien. De lichtjes in de linkerbenedenhoek geven de inhoud van de programmateller weer.

De programmateller (in Intel x86 en Itanium microprocessoren ook wel de instructiepointer (IP) genoemd) is een processorregister die aangeeft waar een computer zich in zijn programmavolgorde bevindt.

In de meeste processors wordt de programmateller na het ophalen van een instructie direct opgehoogd. Het geheugenadres wijst ("points to") dan naar de volgende uit te voeren instructie. In een processor waar de incrementering aan het ophalen voorafgaat, wijst de programmateller naar de instructie die op dat moment wordt uitgevoerd.

Instructies worden meestal sequentieel uit het geheugen opgehaald, maar controletransfer-instructies kunnen de volgorde wijzigen door een nieuwe waarde in de programmateller te plaatsen. Onder controletransferinstructies vallen vertakkingen (ook wel sprongen genoemd), aanroepen van subroutines en returns. Een controletransfer die van de waarheid van een bepaalde bewering afhankelijk is, laat de computer onder verschillende omstandigheden een verschillende volgorde door het programma volgen.

Een vertakking voorziet er in dat de volgende instructie van ergens anders in het geheugen wordt opgehaald. Een aanroep van een subroutine oproep vertakt niet alleen, maar slaat de voorgaande inhoud van de programmateller ook ergens in het computergeheugen op. Een return statement haalt de opgeslagen inhoud van de programmateller weer op en plaatst deze inhoud weer terug in de programmateller. Daarna wordt de sequentiële uitvoering van de instuctieset, die volgt op de aanroep van de subroutine, hervat.