Gursharan Singh Tatla
professorgstatla@gmail.com
   6 Oct. 2010               www.eazynotes.com   1
              Memory Segmentation
      The total memory size is divided into
       segments of various sizes.
      A segment is just an area in memory.
      The process of dividing memory this
       way is called Segmentation.
6 Oct. 2010              www.eazynotes.com     2
              Memory Segmentation
      In memory, data is stored as bytes.
      Each byte has a specific address.
      Intel 8086 has 20 lines address bus.
      With 20 address lines, the memory that can
       be addressed is 220 bytes.
      220 = 1,048,576 bytes (1 MB).
      8086 can access memory with address
       ranging from 00000 H to FFFFF H.
6 Oct. 2010               www.eazynotes.com         3
              Memory Segmentation
      In 8086, memory has four different types
       of segments.
      These are:
       Code Segment
       Data Segment
       Stack Segment
       Extra Segment
6 Oct. 2010             www.eazynotes.com         4
              Segment Registers
      Each of these segments are addressed by
       an address stored in corresponding
       segment register.
      These registers are 16-bit in size.
      Each register stores the base address
       (starting address) of the corresponding
       segment.
      Because the segment registers cannot
       store 20 bits, they only store the upper 16
       bits.
6 Oct. 2010                www.eazynotes.com         5
              Segment Registers
6 Oct. 2010          www.eazynotes.com   6
               Segment Registers
      How is a 20-bit address obtained if there are only
       16-bit registers?
      The answer lies in the next few slides.
      The 20-bit address of a byte is called its Physical
       Address.
      But, it is specified as a Logical Address.
      Logical address is in the form of:
                        Base Address : Offset
      Offset is the displacement of the memory location
       from the starting location of the segment.
6 Oct. 2010                    www.eazynotes.com             7
                    Example
      The value of Data Segment Register
       (DS) is 2222 H.
      To convert this 16-bit address into 20-
       bit, the BIU appends 0H to the LSBs of
       the address.
      After appending, the starting address of
       the Data Segment becomes 22220H.
6 Oct. 2010              www.eazynotes.com        8
              Example (Contd.)
      If the data at any location has a logical
       address specified as:
                    2222 H : 0016 H
      Then, the number 0016 H is the offset.
      2222 H is the value of DS.
6 Oct. 2010               www.eazynotes.com        9
                   Example (Contd.)
      To calculate the effective address of the
       memory, BIU uses the following formula:
      Effective Address = Starting Address of
              Segment + Offset
      To find the starting address of the
       segment, BIU appends the contents of
       Segment Register with 0H.
      Then, it adds offset to it.
6 Oct. 2010                      www.eazynotes.com   10
              Example (Contd.)
      Therefore:
      EA =   22220 H
              + 0016 H
               ------------
               22236 H
6 Oct. 2010                   www.eazynotes.com   11
                   Example (Contd.)
   2222 H                         BYTE – 0              22220 H
DS Register                       BYTE – 1
                                  BYTE – 2
                                        -
              Offset = 0016 H           -
                                        -
                                        -
                                        -
                                Addressed Byte          22236 H
6 Oct. 2010                         www.eazynotes.com             12
              Max. Size of Segment
      All offsets are limited to 16-bits.
      It means that the maximum size
       possible for segment is 216 = 65,535
       bytes (64 KB).
      The offset of the first location within the
       segment is 0000 H.
      The offset of the last location in the
       segment is FFFF H.
6 Oct. 2010                www.eazynotes.com         13
   Where to Look for the Offset
   Segment     Offset Registers                   Function
         CS   IP                    Address of the next instruction
         DS   BX, DI, SI            Address of data
         SS   SP, BP                Address in the stack
         ES   BX, DI, SI            Address of destination data
                                    (for string operations)
6 Oct. 2010                   www.eazynotes.com                       14
                            Question
      The contents of the following registers are:
             CS = 1111 H
             DS = 3333 H
             SS = 2526 H
             IP = 1232 H
             SP = 1100 H
             DI = 0020 H
      Calculate the corresponding physical addresses for
       the address bytes in CS, DS and SS.
6 Oct. 2010                    www.eazynotes.com            15
                             Solution
1. CS = 1111 H
      The base address of the code segment is 11110 H.
      Effective address of memory is given by 11110H + 1232H = 12342H.
2. DS = 3333 H
      The base address of the data segment is 33330 H.
      Effective address of memory is given by 33330H + 0020H = 33350H.
3. SS = 2526 H
      The base address of the stack segment is 25260 H.
      Effective address of memory is given by 25260H + 1100H = 26350H.
6 Oct. 2010                          www.eazynotes.com                    16
17