1. The address of the next instruction is copied from the program counter and placed in the MAR
2. The MAR now contains a memory address, the data that is stored at that address is copied to the MDR
3. The program counter is incremented to point to the next instruction to be processed in the program, ready for the next cycle