保护模式与实模式的切换
关于从保护模式切换到实模式的相关说明
参考于渊的《自己动手写操作系统》第三章中从实模式切换到保护模式,最后有重新切回实模式的代码(代码如下),其中有几点不太明白的,参考其他文章之后在此记录一下。
其中还有不太明白的地方,希望大家能在下面 留个言帮我讲明白,谢谢。
下面代码有些宏定义没贴出来,应该能看明白。
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
2
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
3
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
4
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
5
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
6
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
7
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
8
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
9
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
10
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
11
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
12
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
13
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
14
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
15
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
16
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
17
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
18
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
19
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
20
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
21
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
22
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
23
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
24
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
25
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
26
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
27
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
28
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
29
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
30
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
31
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
32
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
33
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
34
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
35
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
36
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
37
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
38
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
39
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
40
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
41
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
42
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
43
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
44
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
45
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
46
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
47
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
48
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
49
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
50
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
51
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
52
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
53
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
54
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
55
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
56
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
57
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
58
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
59
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
60
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
61
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
62
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
63
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
64
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
65
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
66
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
67
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
68
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
69
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
70
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
71
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
72
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
73
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
74
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
75
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
76
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
77
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
78
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
79
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
80
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
81
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
82
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
83
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
84
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
85
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
86
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
87
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
88
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
89
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
90
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
91
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
92
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
93
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
94
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
95
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
96
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
97
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
98
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
99
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
100
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
101
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
102
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
103
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
104
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
105
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
106
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
107
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
108
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
109
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
110
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
111
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
112
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
113
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
114
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
115
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
116
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
117
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
118
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
119
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
120
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
121
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
122
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
123
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
124
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
125
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
126
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
127
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
128
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
129
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
130
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
131
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
132
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
133
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
134
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
135
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
136
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
137
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
138
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
139
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
140
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
141
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
142
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
143
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
144
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
145
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
146
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
147
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
148
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
149
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
150
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
151
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
152
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
153
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
154
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
155
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
156
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
157
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
158
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
159
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
160
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
161
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
162
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
163
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
164
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
165
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
166
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
167
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
168
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
169
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
170
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
171
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
172
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
173
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
174
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
175
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
176
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
177
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
178
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
179
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
180
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
181
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
182
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
183
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
184
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
185
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
186
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
187
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
188
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
189
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
190
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
191
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
192
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
193
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
194
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
195
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
196
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
197
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
198
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
199
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
200
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
201
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
202
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
203
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
204
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
205
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
206
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
207
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
208
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
209
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
210
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
211
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
212
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
213
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
214
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
215
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
216
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
217
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
218
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
219
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
220
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
221
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
222
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
223
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
224
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
225
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
226
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
227
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
228
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
229
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
230
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
231
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
232
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
233
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
234
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
235
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
236
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
237
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
238
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
239
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
240
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
241
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
242
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
243
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
244
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
245
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
246
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
247
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
248
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
249
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
250
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
251
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
252
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
253
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
254
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
255
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
256
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
257
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
258
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
259
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
260
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
261
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
262
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
263
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
264
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
265
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
266
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
267
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
268
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
269
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
270
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
271
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
272
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
273
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
274
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
275
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
276
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
277
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
278
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
279
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
280
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
281
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
282
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
283
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
284
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
285
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
286
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
287
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
288
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
289
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
290
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
291
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
292
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
293
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
294
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
295
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
296
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
297
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
298
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
299
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
300
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
301
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
302
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
303
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
304
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
305
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
306
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
307
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
308
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
309
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
310
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
311
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
312
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
313
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
314
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
315
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
316
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
317
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
318
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
319
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
320
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
321
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
322
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
323
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
324
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
325
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
326
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
327
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
328
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
329
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
330
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
331
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
332
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
333
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
334
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
注意一.在由保护模式切换到实模式之前,用normal选择子对段寄存器进行填充。
原因:
在切换到实模式之前,把一个指向似乎没有用的数据段的描述符Normal的选择子装载到DS和ES。这是为什么呢?
实模 |
段寄存器 |
段基地址 |
段界限(固定) |
段属性(固定) |
|||||||||
存在性 |
特权级 |
已存取 |
粒度 |
扩展方向 |
可读性 |
可写性 |
可执行 |
堆栈大小 |
一致特权 |
||||
CS |
当前CS*16 |
0000FFFFH |
Y |
0 |
Y |
B |
U |
Y |
Y |
Y |
- |
N |
|
SS |
当前SS*16 |
0000FFFFH |
Y |
0 |
Y |
B |
U |
Y |
Y |
N |
W |
- |
|
DS |
当前DS*16 |
0000FFFFH |
Y |
0 |
Y |
B |
U |
Y |
Y |
N |
- |
- |
|
ES |
当前ES*16 |
0000FFFFH |
Y |
0 |
Y |
B |
U |
Y |
Y |
N |
- |
- |
|
FS |
当前FS*16 |
0000FFFFH |
Y |
0 |
Y |
B |
U |
Y |
Y |
N |
- |
- |
|
GS |
当前GS*16 |
0000FFFFH |
Y |
0 |
Y |
B |
U |
Y |
Y |
N |
- |
- |
在分段管理机制中,每个段寄存器都配有段描述符高速缓冲寄存器,这些高速缓冲寄存器在实方式下仍发挥作用,只是内容上与保护模式下有所不同。如上表所示,其中“Y”表示“是”; “N”表示“否”;“B”表示字节;“U”表示向上扩展,“W”表示以字方式操作堆栈。段基地址仍是 32位,其值是相应段寄存器值(段值)乘以16,在把段值装载到段寄存器时刷新。由于其值是16位段值乘上16,所以在实模式下基地址实际上有效位只有20位。每个段的32位段界限都固定为0FFFFH,段属性的许多位也是固定的。所谓固定是指在实方式下不可设置这些属性值,只能继续沿用保护方式下所设置的值。因此,在准备结束保护模式回到实模式之前,要通过加载一个合适的描述符选择子(如实例代码中的Normal选择子)到有关段寄存器,以使得对应段描述符高速缓冲寄存器中含有合适的段界限和属性。
也就是说,在实模式下装载段寄存器并不会影响段告诉缓冲寄存器的值,比如段界限(其实在实模式也没有必要改变,应为段界限一直都是0ffffh),这也就是为甚麽所有讲保护模式的树在讲到有保护模式切换到实模式时都要加载一个normal选择子的原因了。
应为必须在保护模式下设置好段高速缓冲寄存器的值,因为一旦到了实模式下就不能在改变了。
经我试验,对于normal的描述符,其最重要是段界限一定要设置为0ffffh,如果不是这样,那莫在由保护模式跳转到实模式后会发生错误(对于上述代码如果把normal描述符的段界限改为别的的话,在跳转后会产生死循环的现象,具体是什么原因现在还不明确,哪位高人知道一定要告诉我啊~~)。其次就是属性的设置一定要设置为可读可写的,否则也会发生错误.
注意二:不能从32位代码段返回实模式,而只能从16位代码段返回。
原因:(书中说的)因为无法实现从32位代码段返回时CS高速缓冲寄存器中的属性符合实模式的要求(实模式不能改变段属性)
对于这个解释还是不太明确,如果哪位高人明白其中的来龙去脉的话,请一定在下面留个言,给我解释一下,不胜感激.
保护模式与实模式的切换相关推荐
- CPU的三种工作模式:实模式、保护模式、长模式
文章目录 **实模式** **保护模式** **长模式** **总结** 实模式 访问内存 实模式也就是说寄存器中存放的地址都是真实地址,比如下面这段程序: data SEGMENT ;定义一个数据段 ...
- 汇编:实模式->保护模式->实模式 的切换步骤
1.设置必要的实模式环境,如实模式下的堆栈等. 2.初始化全局描述符表(GDT).局部描述符表(LDT)及中断描述符表(IDT)等. 3.保存实模式下的堆栈地址到某内存处,以便切换回实模式后恢复,如有 ...
- [书]x86汇编语言:从实模式到保护模式 -- 第17章 中断、任务切换、分页机制、平坦模型
# 任务切换 内核任务.用户任务1.用户任务2,之前的轮询切换 利用RTC芯片的硬件中断来实现任务切换 计算机主板上有实时时钟芯片RTC,可以设置RTC芯片,使得它每次更新CMOS中的时间信息后,发出 ...
- 实模式和保护模式区别及寻址方式
64KB-4GB-64TB? 我记得大学的汇编课程.组成原理课里老师讲过实模式和保护模式的区别,在很多书本上也有谈及,无奈本人理解和感悟能力实在太差,在很长一段时间里都没真正的明白它们的内含,更别说为 ...
- X86汇编语言从实模式到保护模式16:特权级和特权级保护
目录 1. 特权级保护机制 1.1 基础段保护机制的不足 1.2 特权级划分 1.3 特权级的表示 1.3.1 当前特权级CPL 1.3.2 描述符特权级DPL 1.3.3 请求特权级RPL 1.4 ...
- 实模式、保护模式和虚拟8086模式
参考自:实模式与保护模式解惑之(一)--二者的起源与区别(河西无名式) 概述:实模式和保护模式是处理器发展的两个非常重要的阶段.这两个模式下的编程也有着显著的不同,弄明实模式与保护模式的区别是理解操作 ...
- 06.实模式进入保护模式
简介 上一节我们实现了从内核加载器中加载其它扇区代码并执行,但始终工作在实模式状态下.内存寻址方式和8086相同,由16位段寄存器的内容乘以16(10H)当做段基地址,加上16位偏移地址形成20位的物 ...
- (操作系统开发)从实模式---->保护模式---->IA-32e模式( 64位模式)
实模式和保护模式都是CPU的工作模式. 实模式与保护模式介绍 在实模式下,程序可以操作任何地址空间,而且无法限制程序的执行权限.尽管这种模式给设置硬件功能带来许多方便,但却给程序执行的安全性和稳定性带 ...
- 深入理解计算机系统-之-内存寻址(二)--存储保护机制(CPU实模式与保护模式)
cpu的保护模式由来 分段机制 8086的诞生,标志着Intel 正式进入了x86时代,这是个多么具有纪念意义的日子:1978-6-8.同时,8086的诞生也是处理器内存寻址技术的第一次飞跃. 对于一 ...
最新文章
- Facebook开源算法代码库,轻松复现前沿视频理解模型
- Smartform中如何设置背景阴影色(Shading)
- 生成configDataContextRefres失败:Error creating bean with name ‘configDataContextRefresher‘
- GNU make manual 翻译( 一百六十四)
- 【转】oracle回闪操作
- 今天算做正式开始SP开发吧,第一步当然是将down下来的资料好好地看一看,顺便也记下这些有用的地址...
- 对非线程安全类ListT的一些总结
- vue3 使用echarts
- 【QT】QT从零入门教程(八):图像灰度化
- asp.net panel 加html,ASP.NET中 Panel 控件的使用方法
- 8647服务器装系统,今天重新安装了系统,麻烦请红夜鬼先生进来帮我看一下
- Flutter:表单Form
- C语言 AES加解密
- 多变量微积分笔记(1)——向量和矩阵
- 理想汽车确认首席技术官王凯离职
- Didn't find class android.support.v7.widget.RecyclerView 解决办法 ———————————————— 版权声明:本文为CSDN博主「eag
- Selenium批量查询运动员技术等级
- matlab数据整周期截断,凯塞窗四谱线插值FFT的电力谐波分析方法
- 如何通过讯飞语音将文本合成后的语音保存到本地
- 臀部大的美女最令男人着迷