Click here to load reader
Upload
rayna-rounds
View
238
Download
11
Embed Size (px)
Citation preview
Lecture 7
Presented ByDr. 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
0000hCS
8000hDS
A000hSS
1MB
offset
1. 1 MB requires 20 bit address2. Each segment is 64 KB3. Offset address is 16 bit or 2 byte4. 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 address1. Pad 0H at the end of segment register2. 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 F000H1F000H
CS = 1000HOffset = F000H
12340H 245FH1479FH
DS = 1234HOffset = 245FH
Default Segment and Offset Registers
1. If CS = 1400H and IP/EIP = 1200 H2. The microprocessor access instruction from
14000 H+ 1200H = 15200H.
Figure 2-4: A memory system showing the placement of four memory segments
Suppose1. 1000H bytes of code2. 190H bytes of data3. 200H bytes of stack
Figure 2-5
Allowsrelocation
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 1680
31157
GDT/LDT
8191
**210
Segment RegistersAs Selector
1. 8192 number of descriptors in each table2. Each descriptor 8 bytes long, thus table size is 64 KB3. Selector selects one descriptor4. Descriptor describes the segment
Selectors and Descriptors
CS/DS/ES
Offset 1680
31157
GDT/LDT
8191
**210
Segment Register
0000 0000 0001 0010 0012H
0000 0000 0100 0100 0044H
1111 1111 1111 0000 FFF0H
Selectors and Descriptors
CS/DS/ES
Offset 1680
31157
GDT/LDT
8191
**210
Access Right Bits
Selectors and Descriptors
CS/DS/ES
Offset 1680
31157
GDT/LDT
8191
**210
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 1680
31157
GDT/LDT
8191
**210
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 = 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
• 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 OAV
Start = 01000000HLimit = 0FFFFHEnd = 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 OAV
Start = 00280000HLimit =End =
00010H00000390000H
• 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 OAV
End = 05FFFFFFHStart = 03000000H
Size = 02FFFFFFH
Limit = 02FFFH
1
00H 00H
03H
00H
0H
2FH FFH
7
5
3
1
6
4
2
0
G D OAV
End = 05FFFFFFHStart = 03000000H
Size = 02FFFFFFH
Limit = 02FFFH
1
1xx1 001x
References
• Chapter 2, Intel Microprocessors – by Brey