89% found this document useful (9 votes)
4K views

Memory Segmentation of 8086

The document discusses memory segmentation in the Intel 8086 processor. It explains that the 8086's 1 MB of addressable memory is divided into segments of varying sizes, including code, data, stack, and extra segments. Each segment is addressed using a 16-bit segment register that stores the segment's base address. A 20-bit physical address is calculated by combining the segment base address with a 16-bit offset value. This allows accessing the full 1 MB memory range using only 16-bit segment registers.

Uploaded by

Ashraf Hossain
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPS, PDF, TXT or read online on Scribd
89% found this document useful (9 votes)
4K views

Memory Segmentation of 8086

The document discusses memory segmentation in the Intel 8086 processor. It explains that the 8086's 1 MB of addressable memory is divided into segments of varying sizes, including code, data, stack, and extra segments. Each segment is addressed using a 16-bit segment register that stores the segment's base address. A 20-bit physical address is calculated by combining the segment base address with a 16-bit offset value. This allows accessing the full 1 MB memory range using only 16-bit segment registers.

Uploaded by

Ashraf Hossain
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPS, PDF, TXT or read online on Scribd
You are on page 1/ 17

Gursharan Singh Tatla

[email protected]
6 Oct. 2010

www.eazynotes.com

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

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

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

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

Segment Registers

6 Oct. 2010

www.eazynotes.com

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

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

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

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

DS Register

BYTE 1

22220 H

BYTE 2
Offset = 0016 H

Addressed Byte

6 Oct. 2010

www.eazynotes.com

22236 H

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

You might also like