Comptador de programa (PC, de l'anglès Program counter), també anomenat Instruction pointer (literalment "punter d'instruccions") en Intel x86 i en microprocessadors Itanium, i a vegades anomenat instruction address register (IAR; literalment "registre de direccions d'instrucció")[1] o simplement com a part del seqüenciador d'instruccions,[2] és un registre del processador que indica on està el processador en la seqüència d'instruccions.
En la majoria de processadors, el PC s'incrementa immediatament després de llegir (fetch) una instrucció de programa, i conté l'adreça de memòria de la pròxima instrucció que s'hauria d'executar. En aquells processadors el qual l'increment precedeix el fetch, el PC apunta la instrucció actual que està sent executada.
Les instruccions normalment es llegeixen seqüencialment des de memòria, però algunes instruccions "control de transferència" com salts, crides i retorns a subrutines i retorns interrompen la seqüència afegint un nou valor al PC. Un salt estableix que la pròxima instrucció executada sigui alguna adreça de la memòria. Una crida de subrutina a banda de fer un salt, guarda prèviament el contingut antic del PC en alguna adreça de memòria. El retorn de subrutina recupera el contingut del PC que s'havia guardat en la darrera crida de subrutina i l'afegeix de nou al PC, per poder reprendre l'execució seqüencial des de la instrucció següent a l'última crida de subrutina.