Of all possibilities in which the PC (program counter) register changes I found these:
1) PC increases its value with loading new instruction
2) with jumps and branches
3) with calling subroutine
4) with return from subroutine
Are those all or am I missing something?
I come from this article.
There are a few more: