It is a 16 bit special function register in the 8085
microprocessor.It keeps track of the the next memory
adderess of the instruction that is to be executed once the
execution of the current instruction is completed.In other
words, it holds the address of the memory location of the
next instruction when the current instruction is executed by
PC [program counter] is a register holding the address of
the instruction which needs to be executed next. Its used
to keep track of current execution point - this tracking is
necessary for various reasons and some of these reasons are:
1. While branching or looping destination address is
specified with respect to the current PC value.
2. While branching to a function call current Pc value is
pushed into the stack and retrieved back when retrunign
from the function-call.
3. PC value is strored when servicing an interrupt and
restored back after execution of ISR.
Program counter hold the address of either the first byte of
the next instruction to be fetched for execution or the
address of the next by byte of instruction. Which has been
completely fetched. In both the cases it gets incremented
automatically one by one as the instruction byte get
fetched. Also program register keeps the address of next
As Anup asked, My doubt is suppose your code reside in the
memory location 9AB0 H. You initially switched on the micro
processor, Now what is the value in PC? Is it 0000H if not
what is that address? And why that address? how to load the
address where I wrote the code?
2) If during the execution of the Code we gave a Reset to
8085 where does the execution Jumps to? Does the program
return back to its normal execution after reset?
The program counter, or PC (also called the instruction pointer, or instruction address register, or just part of the instruction sequencer in some computers) is a processor register that indicates where the computer is in its instruction sequence. Depending on the details of the particular computer, the PC holds either the address of the instruction being executed, or the address of the next instruction to be executed.
In most processors, the instruction pointer is incremented automatically after fetching a program instruction, so that instructions are normally retrieved sequentially from memory, with certain instructions, such as branches, jumps and subroutine calls and returns, interrupting the sequence by placing a new value in the program counter.
Such jump instructions allow a new address to be chosen as the start of the next part of the flow of instructions from the memory. They allow new values to be loaded (written) into the program counter register. A subroutine call is achieved simply by reading the old contents of the program counter, before they are overwritten by a new value, and saving them somewhere in memory or in another register. A subroutine return is then achieved by writing the saved value back in to the program counter again.