Specifications
Computer Architecture and Maintenance (G-Scheme-2014)
Many different types of registers are common between most microprocessor designs. 
These are:
Program Counter (PC)
This register is used to hold the memory address of the next instruction that has to 
executed in a program. This is to ensure the CPU knows at all times where it has 
reached, that is able to resume following an execution at the correct point, and that the 
program is executed correctly.
Instruction Register (IR)
This is used to hold the current instruction in the processor while it is being decoded 
and executed, in order for the speed of the whole execution process to be reduced. This 
is because the time needed to access the instruction register is much less than continual 
checking of the memory location itself.
Accumulator (A, or ACC)
The accumulator is used to hold the result of operations performed by the arithmetic 
and logic unit, as covered in the section on the ALU.
Memory Address Register (MAR)
Used  for  storage  of  memory   addresses,   usually   the   addresses  involved   in  the 
instructions held in the instruction register. The control unit then checks this register 
when needing to know which memory address to check or obtain data from.
Memory Buffer Register (MBR)
When an instruction or data is obtained from the memory or elsewhere, it is first placed 
in the memory buffer register. The next action to take is then determined and carried 
out, and the data is moved on to the desired location.
Flag register / status flags
The flag register is specially designed to contain all the appropriate 1-bit status flags, 
which are changed as a result of operations involving the arithmetic and logic unit. 
Further information can be found in the section on the ALU.
Index register 
A hardware element which holds a number that can be added to (or, in some cases, 
subtracted from) the address portion of a computer instruction to form an effective 
address. Also known as  base register. An  index register in a computer's CPU  is a 
processor register used for modifying operand addresses during the run of a program. 
Prepared By – Prof. Manoj.kavedia (9860174297 – 9324258878 ) (www.kavediasir.yolasite.com)
5










