Introduction to Registers
By Lord Lucifer
May 10, 1998

Introduction



Registers are located directly on the CPU.  They are used to store data for processing.  The general registers can be used to store anything needed, but some registers are specialized for certain functions.
 

Registers



General Purpose Registers

  EAX Accumulator:   Used for general purpose and slightly specialized for
                     mathematical results
  EBX Base:          Used for general purpose and specialized for indexing
  ECX Counter:       Used for general purpose and specialized for counting
  EDX Data:          General purpose register

Each of these registers are 32-bit. They each can be divided into a 16-bit register: AX, BX, CX, DX.  They can also be furthur divided into two 8-bit registers, AH (high) and AL (low). EAX is 32-bit, therefore it is 4 bytes, called a DWORD. AX is 16-bit, 2 bytes, called a WORD. AL and AH are each 8-bit or 1 BYTE.

Offset Registers:

  EBP Base Pointer:        General purpose, holding offsets, and indexing
  ESP Stack Pointer:       Points to the top of the stack
                           The next item pushed on the stack goes here
  ESI Source Index:        Used for general purpose as well as the source in
                           data movement operations
  EDI Destination Index:   Used for general purpose as well as the destination
                           in data movement operations
  EIP Instruction Pointer: Points to the instruction to be executed next

Each of these registers asre 32-bit, but can also be accessed as a 16-bit register (BP, SP, SI, DI, IP).

Segment Registers:

  CS Code Segment:  Segment containing the code of the current program
  DS Data Segment:  Segment containing the data of current program
  ES Extra Segment: Function depends upon program, may be unused
  FS Extra Segment:
  GS Extra Segment:
  SS Stack Segment: Segment which contains the stack memory

These registers are each 16-bit.  Each locate the start of a 64K segment in memory.  You cannot perform math on segment registers or use them to hold the results of other operations.  Segments may be stored anywhere in memory.

Flag Register:

  o Overflow Flag
  d Direction Flag
  i Interrupt Enable Flag
  t Trap Flag
  s Sign Flag
  z Zero Flag
  a Auxillary Flag
  p Parity Flag
  c Carry Flag

The flags usually represent the result of various instructions. In addition to those listed there are several other flags which are not frequently used.

Other Registers:

  CR0-CR3 Control Registers
          These 32-bit registers handle things such as processor mode,
          paging and so on.
  DR0-DR7 Debug Registers
          These are 32-bit registers which are used for debugging
          purposes. DR0-DR3 are used to hold breakpoint addresses and
          DR4-DR7 determine the results of a breakpoint.
  TR6-TR7 Test Registers
          These 32-bit registers are used to test memory paging.
  IDTR    Interrupt Descriptor Table Register (52-bit)
  GDTR    Global Descriptor Table Register (52-bit)
  LDTR    Local Descriptor Table Register (68-bit)
  TR      Task State Segment Register (68-bit)
 

For a plaintext copy: a_tut2.txt



Copyright (C) 1998
Lord Lucifer lord-lucifer@usa.net