Registers of 8085 microprocessor
A microprocessor is a multipurpose, programmable, clock-driven, register-based electronic device that reads binary instructions from a storage device called memory, accepts binary data as input and processes data according to those instructions and provide results as output. A 8085 microprocessor, is a second generation 8-bit microprocessor and is the base for studying and using all the microprocessor available in the market.
Why use Registers in 8085 microprocessor ?
Here are some reasons why registers are used in the 8085 microprocessor:
- Temporary storage: Registers are used as temporary storage locations for data that needs to be processed by the microprocessor. For example, when performing arithmetic operations, the operands are typically stored in registers.
- Addressing: Registers are used for addressing memory locations in the 8085 microprocessor. The program counter (PC) register keeps track of the memory location of the current instruction, while the stack pointer (SP) register keeps track of the top of the stack.
- Input/Output: Registers are used for communicating with input/output (I/O) devices. For example, the accumulator (A) register is used for communicating with the data bus, which is connected to I/O devices.
- Status information: Registers are used for storing status information about the state of the microprocessor. For example, the flag register stores information about the results of arithmetic and logical operations, including whether a result is negative, zero, or carry.
- Optimization: Registers are used to optimize the performance of the microprocessor. By using registers to store frequently used data and instructions, the microprocessor can access this information more quickly than if it had to retrieve it from memory.
Registers in 8085:
(a) General Purpose Registers – The 8085 has six general-purpose registers to store 8-bit data; these are identified as- B, C, D, E, H, and L. These can be combined as register pairs – BC, DE, and HL, to perform some 16-bit operation. These registers are used to store or copy temporary data, by using instructions, during the execution of the program.
(b) Specific Purpose Registers –
- Accumulator: The accumulator is an 8-bit register (can store 8-bit data) that is the part of the arithmetic and logical unit (ALU). After performing arithmetical or logical operations, the result is stored in accumulator. Accumulator is also defined as register A.
- Flag registers: The flag register is a special purpose register and it is completely different from other registers in microprocessor. It consists of 8 bits and only 5 of them are useful. The other three are left vacant and are used in the future Intel versions.These 5 flags are set or reset (when value of flag is 1, then it is said to be set and when value is 0, then it is said to be reset) after an operation according to data condition of the result in the accumulator and other registers. The 5 flag registers are:
- Sign Flag: It occupies the seventh bit of the flag register, which is also known as the most significant bit. It helps the programmer to know whether the number stored in the accumulator is positive or negative. If the sign flag is set, it means that number stored in the accumulator is negative, and if reset, then the number is positive.
- Zero Flag:: It occupies the sixth bit of the flag register. It is set, when the operation performed in the ALU results in zero(all 8 bits are zero), otherwise it is reset. It helps in determining if two numbers are equal or not.
- Auxiliary Carry Flag: It occupies the fourth bit of the flag register. In an arithmetic operation, when a carry flag is generated by the third bit and passed on to the fourth bit, then Auxiliary Carry flag is set. If not flag is reset. This flag is used internally for BCD(Binary-Coded decimal Number) operations. Note – This is the only flag register in 8085 which is not accessible by user.
- Parity Flag: It occupies the second bit of the flag register. This flag tests for number of 1’s in the accumulator. If the accumulator holds even number of 1’s, then this flag is set and it is said to even parity. On the other hand if the number of 1’s is odd, then it is reset and it is said to be odd parity.
- Carry Flag: It occupies the zeroth bit of the flag register. If the arithmetic operation results in a carry(if result is more than 8 bit), then Carry Flag is set; otherwise it is reset.
(c) Memory Registers – There are two 16-bit registers used to hold memory addresses. The size of these registers is 16 bits because the memory addresses are 16 bits. They are :-
- Program Counter: This register is used to sequence the execution of the instructions. The function of the program counter is to point to the memory address from which the next byte is to be fetched. When a byte (machine code) is being fetched, the program counter is incremented by one to point to the next memory location.
- Stack Pointer: It is used as a memory pointer. It points to a memory location in read/write memory, called the stack. It is always incremented/decremented by 2 during push and pop operation.
- Sign Flag (7th bit): It is reset(0), which means number stored in the accumulator is positive.
- Zero Flag (6th bit): It is reset(0), thus result of the operations performed in the ALU is non-zero.
- Auxiliary Carry Flag (4th bit): We can see that b3 generates a carry which is taken by b4, thus auxiliary carry flag gets set (1).
- Parity Flag (2nd bit): It is reset(0), it means that parity is odd. The accumulator holds odd number of 1’s.
- Carry Flag (0th bit): It is set(1), output results in more than 8 bit.
Uses of Registers of 8085 microprocessor :
Here are some common uses of the different registers in the 8085 microprocessor:
- Accumulator (A) register: The accumulator register is the most commonly used register in the 8085 microprocessor. It is used for arithmetic and logical operations, as well as for input/output (I/O) operations. The accumulator is also used as a temporary storage location for data.
- Program Counter (PC) register: The PC register is used to keep track of the memory location of the current instruction. When an instruction is executed, the PC register is automatically incremented to point to the next instruction in memory.
- Stack Pointer (SP) register: The SP register is used to keep track of the top of the stack. The stack is used for temporary storage of data and return addresses during subroutine calls.
- Flag Register: The flag register is used to store status information about the results of arithmetic and logical operations, including whether a result is negative, zero, or carry.
- General Purpose Registers (B, C, D, E, H, and L): These registers are used for general purpose storage of data, as well as for addressing memory locations. They can be used in pairs as 16-bit registers, such as BC, DE, and HL, for more efficient addressing of memory locations.
- Instruction Register (IR) and Machine Cycle Register (MCR): These registers are used internally by the microprocessor to decode instructions and control the timing of machine cycles.
Features of these registers are:
- All of the registers in the 8085 microprocessor are directly accessible by the arithmetic and logic unit (ALU), allowing for efficient processing of data.
- The accumulator register is used as a default destination for most arithmetic and logic instructions, which simplifies programming.
- The general purpose registers can be used for storing data during computations, but they can also be used to hold memory addresses, making them useful for accessing memory locations.
- The program counter and stack pointer registers are crucial for managing the flow of instructions and data within a program.
- The flag register provides valuable information about the results of arithmetic and logic operations, allowing for efficient decision-making in programs.
- The instruction register stores the current instruction being executed, allowing for efficient decoding and control signal generation by the control unit.
- Fast access: Registers provide a fast and efficient way to access data and perform operations. Since the registers are located inside the processor, they can be accessed quickly without having to wait for data to be fetched from memory.
- Reduced memory access: The use of registers can help reduce the number of memory accesses required, which can improve the overall performance of the system.
- Specialized functionality: Each register in the 8085 microprocessor has a specific function, such as the accumulator for arithmetic operations and the program counter for storing the address of the next instruction. This specialized functionality can make programming and debugging easier.
- Reduced complexity: By providing dedicated registers for specific purposes, the 8085 microprocessor reduces the complexity of the programming and execution process.
- Limited storage capacity: The 8085 microprocessor has a limited number of registers, which can restrict the amount of data that can be stored and manipulated at any given time.
- Complex addressing modes: Some of the addressing modes used in the 8085 microprocessor can be complex, which can make programming more difficult.
- Context switching: In some cases, switching between different sets of registers can add overhead and complexity to the programming process.
- Lack of flexibility: The fixed number and function of registers in the 8085 microprocessor can limit the flexibility of the system and make it more difficult to adapt to changing requirements.