Used in most arithmetic operations and input/output operations.
Used as an index for extended addressing and common computations.
Contains a value to control the number of loop repetitions.
Involved in some input/output operations and large-value multiplication/division.
Holds the location of the last item placed onto the stack.
Stores the offset address of the next instruction to execute.
References data and addresses passed via the stack.