General Purpose Registers (AX,BX,CX,DX,SP,BP,SI,DI) and ALU in Intel 8086

Last updated on July 14th, 2020 at 01:18 pm

General Purpose Registers

In computer architecture, a processor register is a quickly accessible location available to a computer’s central processing unit (CPU). Registers usually consist of a small amount of fast storage, although some registers have specific hardware functions, and may be read-only or write-only. Registers are normally measured by the number of bits they can hold, for example, an “8-bit register”, “32-bit register” or a “64-bit register” (or even with more bits).

General Registers or General Purpose Registers are a kind of registers which can store both data and addresses. All general registers of the intel 8086 microprocessor can be used for arithmetic and logic operations.

General Purpose Registers (AX,BX,CX,DX,SP,BP,SI,DI) and ALU in Intel 8086

AX (Accumulator)

This is accumulator register. It gets used in arithmetic, logic and data transfer instructions. In manipulation and division, one of the numbers involved must be in AX or AL    

BX (Base Register)

This is base register. BX register is an address register. It usually contain a data pointer used for based, based indexed or register indirect addressing.    

CX (Count register)

This is Count register. This serves as a loop counter. Program loop constructions are facilitated by it. Count register can also be used as a counter in string manipulation and shift/rotate instruction.    

DX (Data Register)

This is data register. Data register can be used as a port number in I/O operations. It is also used in multiplication and division.    

SP (Stack Pointer)

This is stack pointer register pointing to program stack. It is used in conjunction with SS for accessing the stack segment.

BP (Base Pointer)

This is base pointer register pointing to data in stack segment. Unlike SP, we can use BP to access data in the other segments.

SI (Source Index)

This is source index register which is used to point to memory locations in the data segment addressed by DS. Thus when we increment the contents of SI, we can easily access consecutive memory locations.

DI (Destination Index)

This is destination index register performs the same function as SI. There is a class of instructions called string operations, that use DI to access the memory locations addressed by ES.

ALU (Arithmetic & Logic Unit)

This unit can perform various arithmetic and logical operation, if required, based on the instruction to be executed. It can perform arithmetical operations, such as add, subtract, increment, decrements, convert byte/word and compare etc and logical operations, such as AND, OR, exclusive OR, shift/rotate and test etc.

Next Read


  1. Just to clarify: The AX register is an accumulator ONLY for multiplication and division because MUL and DIV use AX as the implicit destination register. It is NOT an accumulator for ADD or ADC because these operations are true binary operations where the destination register is specified explicitly.

Leave a Reply

Your email address will not be published. Required fields are marked *