Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7439617
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 29, 20262026-05-29T10:43:53+00:00 2026-05-29T10:43:53+00:00

I took Computer Architecture course and I understood that processor has 32 registers each

  • 0

I took Computer Architecture course and I understood that processor has 32 registers each of 32 bit. Now I am studying computer architecture course in which I read that 8086 has 8 registers only. But the book I read and this website shows many registers. I am getting confused about the registers in 8086 and 8088. Please help me out.

NOTE:

I have a good understanding of different register sizes in different processors. I am just getting confused in the number of registers.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-29T10:43:54+00:00Added an answer on May 29, 2026 at 10:43 am

    The 8086 and 8088 are 16 bit processors – their registers are each 16 bits in width. (A few instructions treat the combination of DX and AX as a 32 bit integer, like div input and mul output.)

    Note that the 8086 has 16 bit data bus; the 8088 has an 8 bit data bus. (So loading/storing a 16-bit word takes 2 bus cycles. Addresses are still 20-bit for both.)

    The site you linked is accurate; the following is a copy/paste from it with a couple light edits:

    GENERAL PURPOSE REGISTERS

    8086 CPU has 8 general purpose registers, each register has its own
    name:

    AX – the accumulator register (divided into AH / AL):

    Generates shortest machine code: short-form encodings exist
    Arithmetic, logic and data transfer
    One number must be in AL or AX
    Multiplication & Division
    Input & Output
    

    BX – the base address register (divided into BH / BL).

    Offset address relative to DS by default   CX - the count register (divided into CH / CL):
    
    The LOOP instruction uses it implicitly as a counter
    Repetitive operations on strings with the REP command
    Count (in CL) of bits to shift and rotate   DX - the data register (divided into DH / DL):
    
    DX:AX concatenated into 32-bit register for some MUL and DIV operations
    Specifying ports in some IN and OUT operations   SI - source index register:
    
    Can be used for pointer addressing of data
    Used as source in some string processing instructions
    Offset address relative to DS by default   DI - destination index register:
    
    Can be used for pointer addressing of data
    Used as destination in some string processing instructions as ES:DI
    Offset address relative to DS outside of string instructions
    

    BP – base pointer:

    Primarily used to access parameters and locals on the stack
    Offset address relative to SS
    

    SP – stack pointer:

    Always points to top item on the stack
    Offset address relative to SS (but can't be used in 16-bit addressing modes)
    Should always points to word (byte at even address)
    An empty stack will have SP = FFFEh
    

    SEGMENT REGISTERS

    • CS – points at the segment containing the current program.
    • DS – generally points at segment where variables are defined.
    • ES – extra segment register, it’s up to a coder to define its usage.
    • SS – points at the segment containing the stack.

    Although it is possible to store any data in the segment registers,
    this is never a good idea. The segment registers have a very special
    purpose – pointing at accessible blocks of memory.

    Segment registers work together with general purpose register to
    access any memory value. For example if we would like to access memory
    at the physical address 12345h (hexadecimal), we could set the DS =
    1230h and SI = 0045h. This way we can form 20-bit linear addresses,
    instead of just 16 bit with a single register. (This applies in real
    mode; in protected mode segmentation is different.)

    The CPU makes a calculation of the physical address by multiplying the
    segment register by 10h and adding the general purpose register to it
    (1230h * 10h + 45h = 12345h):

    The address formed with 2 registers is called an effective address.
    By default BX, SI and DI registers work with DS segment register; BP
    and SP work with SS segment register. Other general purpose
    registers cannot form an effective address. Also, although BX can
    form an effective address, BH and BL cannot.

    SPECIAL PURPOSE REGISTERS

    IP – the instruction pointer:

    Always points to next instruction to be executed
    Offset address relative to CS
    

    IP register always works together with CS segment register and it
    points to currently executing instruction.

    FLAGS REGISTER

    Flags Register – determines the current state of the processor. They
    are modified automatically by CPU after mathematical operations, this
    allows to determine the type of the result, and to determine
    conditions to transfer control to other parts of the program.
    Generally you cannot access FLAGS directly, except via pushf/popf. Some special instructions exist to set/clear some of the specific bits.

    The status / condition-code bits in FLAGS are:

    • Carry Flag (CF) – this flag is set to 1 when there is an unsigned
      overflow. For example when you add bytes 255 + 1 (result is not in
      range 0…255). When there is no overflow this flag is set to 0.
    • Parity Flag (PF) – this flag is set to 1 when there is even number of one bits in (the low 8 bits of a) result, and to 0 when there is odd number of one bits.
    • Auxiliary Flag (AF) – set to 1 when there is an unsigned overflow (carry-out) for low nibble (4 bits).
    • Zero Flag (ZF) – set to 1 when result is zero. For non-zero result this flag is set to 0.
    • Sign Flag (SF) – set to 1 when result is
      negative. When result is positive it is set to 0. (This flag takes the value of the most significant bit.)
    • Trap Flag (TF) – Used for
      on-chip debugging.
    • Interrupt enable Flag (IF) – when this flag is set to 1 CPU reacts to interrupts from external devices.
    • Direction Flag (DF) – this
      flag is used by some instructions to process arrays. When this flag
      is set to 0 the processing is done forward, when this flag is set to 1
      the processing is done backward.
    • Overflow Flag (OF) – set to 1
      when there is a signed overflow. For example, when you add bytes 100 + 50 (result is not in range -128…127).
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I took a Computer Graphics exam a couple of days ago which had extra
This semester, I took a course in computer graphics at my University. At the
I took a computer graphics course (graduate level) this past year. We spent the
I'm studying Computer Graphics as part of my curriculum at my university. The course
Alright, so I just took an introductory class into Computer Science and the school's
I took the plunge this afternoon and began studying LINQ, so far just mucking
I took 2 images with a cross point and now I'm trying to compare
I am trying to make a program where the computer has to guess a
When I first became interested in programming, I took a class that introduced me
I took Computer Networking last semester and did some C programming in linux (using

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.