← IGCSE Computer Science Paper 1

Program counter (PC)

A register in the CPU that holds the address of the next instruction to be fetched. It increments after each fetch and changes when the program jumps.

Understanding Program counter (PC) in IGCSE Computer Science Paper 1

What it does: The value in the PC is a memory address such as 200, which is where the next instruction is stored, not the instruction itself. A jump overwrites the PC with the target address, so the next fetch comes from address 50. Results of calculations are held in the accumulator (ACC). The PC only stores an address. The number in the PC is a location in memory, not a data value to be processed. The address in the PC is copied to the MAR. The CIR receives the instruction later in the cycle. The PC is a small, fast register in the CPU, not part of storage.

Common mistakes: A fetch starts by copying the address held in the PC into the MAR, so it should be MAR ← PC. The broken line copies in the wrong direction. The PC increments after each fetch so it points to the next instruction. It should be PC ← PC + 1, not subtract 1.

Class: _____________________  ·  Name: _____________________  ·  Date: _________

Free printable worksheet with full answer key — or add this module to a class and your students practise it interactively.

This module's key terms are also in a printable crossword (Modules 218–227) and word search (Modules 218–239).

Take this worksheet further — free with Cloodit

Each concept is reinforced from every angle — learned, then applied, then tested.

Learning
Duo
What does the program counter (PC) hold?
The address of the next instruction to be fetchedThe instruction that is currently being executed
Matches
PC = "ADD 5"
↓
The PC holds the address of the next instruction, not the instruction itself, so it cannot store ADD 5.
Applying
Meanings
Term
Program counter (PC)
Meaning
A register in the CPU that holds the address of the next instruction to be fetched. It increments after each fetch and changes when the program jumps.
Practice
// PC holds an address
Testing
Gaps
MAR ←
Check Answer
Spots
1PC ← MAR
2MDR ← RAM[MAR]

Cloodit turns curriculum-aligned coding content into journeys students work through one biome at a time.

The 'African Wild Dog' badge — Savannah Streak, one of Cloodit's 106 collectible badges
Students earn collectable badges

Over 100 of them, across seven natural biomes.

Study Buddy
Students build a real study resource

Turns their work into revision material ready for Flash Cards and Exam study.

Diamond Dash — one of Cloodit's live, competitive Sprint games
Students lock in with Sprints

Live, competitive practice for the start of the lesson or a teacher-led lesson finisher.

A Cloodit certificate of achievement, ready to personalise and print
Custom printable certificates

Honour your top performers, or encourage a student who's trying hard — ready to print in seconds.

Quick Questions

1. What does the program counter (PC) hold?
A. The instruction that is currently being executed
B. The address of the next instruction to be fetched ✓
The PC holds an address, not the instruction itself. The current instruction is held in the CIR.
2. What normally happens to the PC after each instruction is fetched?
A. It is incremented by 1 to point to the next instruction ✓
B. It is reset to 0 ready for the next fetch
The PC is incremented so that it points to the next instruction in memory. It is only reset when the computer restarts.
3. Which statement about the PC is correct?
A. The PC stores the result of a calculation
B. The PC stores a memory address ✓
Results of calculations are held in the accumulator (ACC). The PC only stores an address.
4. The PC holds the value 120. What does 120 represent?
A. The address in RAM of the next instruction ✓
B. The data value that the next instruction will add
The number in the PC is a location in memory, not a data value to be processed.
5. A program jumps to a different part of the code. What happens to the PC?
A. It is changed to the address of the instruction jumped to ✓
B. It stays the same and keeps counting up by 1
A jump changes the PC to the new address, so the next fetch takes place from that location.

Match the Pairs

PC = PC + 1 → The program counter increments so it holds the address of the next instruction
MAR <- PC → The address in the program counter is copied to the memory address register to start a fetch
The PC holds an address, not an instruction, so it stores the location of the next instruction in RAM → PC = 200
When the program jumps, the PC changes to the address of the jump target instead of just adding 1 → JUMP 50 -> PC = 50
PC = "ADD 5" → The PC holds the address of the next instruction, not the instruction itself, so it cannot store ADD 5.
After a fetch, the PC stays the same → The PC increments after each fetch so it points to the next instruction. If it stayed the same, the same instruction would be fetched again.

Key Term

Program counter (PC)
A register in the CPU that holds the address of the next instruction to be fetched. It increments after each fetch and changes when the program jumps.

Fill in the Blanks

1. MAR ← PC
Hint: Type the register whose stored address is copied to the MAR to start a fetch.
2. PC ← PC + 1
Hint: Type the number added to the PC after each fetch so it points to the next instruction.
3. JMP 50 PC ← 50
Hint: Type the register whose value changes when the program jumps.
4. # PC holds an address, not an instruction
Hint: Type the word for what the PC holds, as opposed to an instruction.
5. MAR ← PC PC ← PC + 1
Hint: Type the operator that increments the PC after the fetch.

Spot the Error

Question 1
A PC ← MAR
B MDR ← RAM[MAR]
C PC ← PC + 1
D CIR ← MDR
Line A — A fetch starts by copying the address held in the PC into the MAR, so it should be MAR ← PC. The broken line copies in the wrong direction.
Question 2
A PC ← 200
B MAR ← PC
C MDR ← RAM[MAR]
D PC ← PC - 1
Line D — The PC increments after each fetch so it points to the next instruction. It should be PC ← PC + 1, not subtract 1.
Question 3
A MAR ← PC
B PC ← RAM[MAR]
C PC ← PC + 1
D CIR ← MDR
Line B — The PC holds an address, not an instruction. The instruction read from RAM goes into the MDR, so it should be MDR ← RAM[MAR].
Question 4
A CIR ← JMP 50
B Decode: jump to address 50
C PC ← PC + 1
D MAR ← PC
Line C — When the program jumps, the PC changes to the jump address. It should be PC ← 50, not a normal increment.
Question 5
A PC ← 3
B MAR ← PC
C MDR ← RAM[MDR]
D PC ← PC + 1
Line C — The address of the instruction to read comes from the MAR, which was loaded from the PC. It should be MDR ← RAM[MAR].

Student with a class code? Join your class →