プログラムカウンター(英語:Program Counter、通称:PC)とは、 CPUが次に実行すべき命令があるメモリ上のアドレスを格納したレジスターである。
なお、プログラムカウンターの呼称はCPUメーカーごとに方言がいっぱいある。
通常、CPUは命令をフェッチするとPCはインクリメントされ次に実行する命令のメモリアドレスを保持する。 この繰り返しにより順次命令が実行される。
条件分岐命令はこのPCにジャンプ先となる新しい値を入れることで実行順序を変更する。
サブルーチンコールは、前述の条件分岐命令の直前にPCの値をどこかに保存しておくことで、リターンできるようにしたものである。
AVRコントローラーなどのRISCチップの一部製品は、 PCがバイナリカウンターになっており、 命令のフェッチではなく1クロックごとに強制的にインクリメントされるものもある。