Introduction to Bioinformatics - North South University

disturbedtonganeseΒιοτεχνολογία

2 Οκτ 2013 (πριν από 4 χρόνια και 1 μήνα)

74 εμφανίσεις

Lecture 7

Presented By

Dr.
Shazzad

Hosain

Asst. Prof. EECS, NSU

Real Mode Memory Addressing


The first 1MB memory is Real memory or the
Conventional memory

16 bit Segment registers

*

*

*






Segment 1

Segment 2

Segment n

0000h

CS

8000h

DS

A000h

SS

1MB

offset

1.
1 MB requires 20 bit address

2.
Each segment is 64 KB

3.
Offset address is 16 bit or 2 byte

4.
Actual address = segment address + offset address

Real Mode Memory Addressing


Real mode operation allows to address 1MB of
memory space


even for the Pentium
microprocessor


This first 1MB memory is called the real memory
or the conventional memory


A combination of
segment
and
offset

address
access the real memory


Segment registers contains the beginning address
of any 64KB memory segment


The
offset address
selects the any location within
the 64KB memory space

Segment Plus Offset Determines Address

From Intel Microprocessor

To get the real address

1.
Pad
0H

at the end of segment register

2.
Add the offset value

1.
Since each segment is 64 K, the offset
address can take maximum of
FFFFH

2.
Once, the beginning address is found in
segment registers, ending address is
calculated by adding FFFFH with the value of
segment register after padding 0H after it.

10000H


F000H

1F000H

CS

= 1000H

Offset

= F000H

12340H


245FH

1479FH

DS

= 1234H

Offset

= 245FH

Default Segment and Offset Registers

1.
If CS = 1400H and IP/EIP = 1200 H

2.
The microprocessor access instruction from
14000 H+ 1200H = 15200H.

Figure 2
-
4: A memory system showing the
placement of four memory segments

Suppose

1.
1000H bytes of code

2.
190H bytes of data

3.
200H bytes of stack

Figure 2
-
5

Allows

relocation

Protected Mode


The segment register now contains a
selector


Selector selects a
descriptor

from a
descriptor
table


The descriptor describes the memory
segment’s location


Two descriptor table


Global Descriptor Table (GDT)


Local Descriptor Table (LDT)

Selectors and Descriptors

*

*

*

Offset




16

8

0




31

15

7

GDT/LDT

8191


*

*

2

1

0

Segment Registers

As Selector

1.
8192 number of descriptors in each table

2.
Each descriptor 8 bytes long, thus table size is 64 KB

3.
Selector selects one descriptor

4.
Descriptor describes the segment

Selectors and Descriptors

CS/DS/ES

Offset




16

8

0




31

15

7

GDT/LDT

8191


*

*

2

1

0

Segment Register

0000 0000 0001 0010

0012H

0000 0000 0100 0100

0044H

1111 1111 1111 0000

FFF0H

Selectors and Descriptors

CS/DS/ES

Offset




16

8

0




31

15

7

GDT/LDT

8191


*

*

2

1

0

Access Right Bits

Selectors and Descriptors

CS/DS/ES

Offset




16

8

0




31

15

7

GDT/LDT

8191


*

*

2

1

0

7


5


3


1

6


4


2


0

A0H C2H

00H

10H 00H

1001 1011

0000 0000 0000 0000

Selectors and Descriptors

CS/DS/ES

Offset




16

8

0




31

15

7

GDT/LDT

8191


*

*

2

1

0

7


5


3


1

6


4


2


0

00H
00H

21H

00H 1FH

0000 0000 0000 0000

Code a descriptor for 80286 that
starts at 210000H and ends at
21001FH. This memory segment is a
code segment that can be read

Limit = 21001FH


210000H = 001FH

Selectors and Descriptors

7


5


3


1

6


4


2


0

00H
00H

21H

00H 1FH

1xx1 1x11

0000 0000 0000 0000

Code a descriptor for 80286 that
starts at 210000H and ends at
21001FH. This memory segment is a
code segment that can be read

Limit = 21001FH


210000H = 001FH

Selectors and Descriptors


32 bit / 4 byte base, memory size is 4 GB = 2
2
x2
10
x2
10
x2
10


AV = 1, means available, 0 means not available


D = 1, means 32 bit instructions, 0 means 16 bit instructions


G bit or the Granularity bit


G = 0, the limit is from 1 to 1MB in length


G = 1, the limit is multiplied by 4K bytes (appended with 000H). So
segment length is 4K to 4G bytes in steps of 4K bytes

Selectors and Descriptors


G bit or the Granularity bit


G = 0, the limit is from 1 to 1MB in length


G = 1, the limit is multiplied by 4K bytes (appended with 000H). So
segment length is 4K to 4G bytes in steps of 4K bytes

00H
00H

01H

00H

0H

FFH
FFH

7


5


3


1

6


4


2


0

0

D

O

A
V

Start = 01000000H

Limit = 0FFFFH

End = 0100FFFFH

Selectors and Descriptors


G bit or the Granularity bit


G = 0, the limit is from 1 to 1MB in length


G = 1, the limit is multiplied by 4K bytes (appended with 000H). So
segment length is 4K to 4G bytes in steps of 4K bytes

00H
00H

00H

28H

0H

00H 10H

7


5


3


1

6


4


2


0

1

D

O

A
V

Start = 00280000H

Limit =

End =

00010

H

000

00390000H


G bit or the Granularity bit


G = 0, the limit is from 1 to 1MB in length


G = 1, the limit is multiplied by 4K bytes (appended with 000H). So
segment length is 4K to 4G bytes in steps of 4K bytes

00H
00H

03H

00H

0H

2FH FFH

7


5


3


1

6


4


2


0

G

D

O

A
V

End = 05FFFFFFH

Start = 03000000H

Size = 02FFFFFFH

Limit = 02FFFH

1

00H
00H

03H

00H

0H

2FH FFH

7


5


3


1

6


4


2


0

G

D

O

A
V

End = 05FFFFFFH

Start = 03000000H

Size = 02FFFFFFH

Limit = 02FFFH

1

1xx1 001x

References


Chapter 2, Intel Microprocessors


by
Brey