The program counter (PC), also known as register R15 in ARM architecture, keeps track of the address of the next instruction to execute. The CPU fetches the instruction at the PC address, decodes and executes it, then updates the PC to point to the following instruction. Normally, the PC increments by 4 bytes because ARM instructions are 4 bytes long. However, branch instructions can change the PC to a different address, causing the program to jump. If the PC points to an invalid address where no instruction exists, the execution stops. This step-by-step trace shows how the PC changes during instruction fetch and execution cycles.