slide 07 - North South University

Download Report

Transcript slide 07 - North South University

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
Segment n
SS
A000h
*
*
*
1MB
offset
Segment 2
16 bit Segment registers
DS
8000h
Segment 1
1.
2.
3.
4.
1 MB requires 20 bit address
CS 0000h
Each segment is 64 KB
Offset address is 16 bit or 2 byte
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
To get the real address
1. Pad 0H at the end of segment register
2. Add the offset value
CS
Offset
= 1000H
= F000H
10000H
F000H
1F000H
DS
Offset
= 1234H
= 245FH
12340H
245FH
1479FH
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.
From Intel Microprocessor
Default Segment and Offset Registers
1. If CS = 1400H and IP/EIP = 1200 H
2. The microprocessor access instruction from
14000 H+ 1200H = 15200H.
Suppose
1. 1000H bytes of code
2. 190H bytes of data
3. 200H bytes of stack
Allows
relocation
Figure 2-4: A memory system showing the
placement of four memory segments
Figure 2-5
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
Segment Registers
As Selector
1.
2.
3.
4.
16
8
0
8191
*
*
2
1
0
31
15
7
GDT/LDT
8192 number of descriptors in each table
Each descriptor 8 bytes long, thus table size is 64 KB
Selector selects one descriptor
Descriptor describes the segment
Selectors and Descriptors
Offset
Segment Register
CS/DS/ES
8191
*
*
2
1
0
16
8
0
GDT/LDT
0000 0000 0001 0010
0012H
0000 0000 0100 0100
0044H
1111 1111 1111 0000
FFF0H
31
15
7
Selectors and Descriptors
8191
Offset
CS/DS/ES
16
8
0
*
*
2
1
0
GDT/LDT
31
15
7
Access Right Bits
Selectors and Descriptors
8191
Offset
CS/DS/ES
16
8
0
*
*
2
1
0
31
15
7
GDT/LDT
7
0000
0000
5
1001
1011
0000
0000
00H
6
4
3
A0H
C2H
2
1
10H
00H
0
Selectors and Descriptors
8191
Offset
CS/DS/ES
16
8
0
*
*
2
1
0
31
15
7
Code a descriptor for 80286 that
starts at 210000H and ends at
21001FH. This memory segment is a
code segment that can be read
GDT/LDT
7
0000
0000
0000
0000
21H
5
6
4
3
00H
00H
2
1
00H
1FH
0
Limit = 21001FH – 210000H = 001FH
Selectors and Descriptors
Code a descriptor for 80286 that
starts at 210000H and ends at
21001FH. This memory segment is a
code segment that can be read
7
0000
0000
5
1xx1
1x11
0000
0000
21H
6
4
3
00H
00H
2
1
00H
1FH
0
Limit = 21001FH – 210000H = 001FH
Selectors and Descriptors
•
•
•
•
32 bit / 4 byte base, memory size is 4 GB = 22x210x210x210
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
7
01H
5
• G bit or the Granularity bit
A
0H
0 D O V
6
00H
4
3
00H
00H
2
1
FFH
FFH
0
Start = 01000000H
Limit =
0FFFFH
End = 0100FFFFH
– 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
7
00H
5
• G bit or the Granularity bit
A
0H
1 D O V
6
28H
4
3
00H
00H
2
1
00H
10H
0
Start = 00280000H
00010
000 H
Limit =
End = 00390000H
– 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
7
03H
1G D O
5
A
V
0H
00H
4
3
00H
00H
2
1
2FH
FFH
0
End
= 05FFFFFFH
Start = 03000000H
• G bit or the Granularity bit
6
Size
= 02FFFFFFH
Limit =
02FFFH
– 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
7
5
03H
1xx1
1G D O
001x
A
V
0H
6
00H
4
3
00H
00H
2
1
2FH
FFH
0
End
= 05FFFFFFH
Start = 03000000H
Size
= 02FFFFFFH
Limit =
02FFFH
References
• Chapter 2, Intel Microprocessors – by Brey