分享
 
 
 

80386保护模式简介

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

在保护模式下有很多新的名词 ,包含 GDT.LDT.IDT 以及 CR0-CR3 ,笔者保护

模式并不清楚 ,所以底下资料可能有错误。这里使用大量的线性记忆体观念 ,请您

一定要从头往後看 ,否则很可能会看不懂 ,且必须懂线性记忆体计算方式。

【 GDT 介绍 】

在真实模式下每个区段都等於64K ,可是保护模式下每个区段的大小却是可变动

的 ,每个区段有多大呢 ,就是由 GDT 来决定。

您可以用 SGDT CS:[BX] 的方式将 GDT 的值读出 ,它的长度为 6 BYTE ,底下

是笔者写的小程式读出。

XXXX:0000 FF 0F 00 20 C0 00

^^^^^^^^^^^GDT表所在的线性记忆体位址

^^^^^GDT表长度+1

将此表资料读出来.

X:00C02000 00 00 00 00 00 00 00 00-FF FF 00 A0 C2 9B 40 00 ........... B.@.

X:00C02010 FF FF B0 DD 01 93 40 00-FF FF E0 B3 00 9A 00 00 ..0]..@...`3....

X:00C02020 FF FF E0 B3 00 93 00 00-00 00 00 20 C1 82 80 00 ..`3....... A...

X:00C02030 00 00 00 20 C1 93 C0 00-00 00 00 20 C0 93 C0 00 ... A.@.... @.@.

X:00C02040 00 00 00 00 00 92 40 00-FF FF 00 80 0B 92 40 00 ......@.......@.

它所代表的意思是如下图所示∶(每组 8 byte)

┌──────────────────────┐

1│ Limit bit 0-15 │ 0 byte

├──────────────────────┤

3│ Base bit 0-15 │ 2

├──────────┬───────────┤

5│ 存取权 │ Base bit 16-23 │ 4

├──────────┼───────────┤

7│ Base bit 24-31 │G│..│limit bit 16-19│ 6

└──────────┴───────────┘

"G"代表 Limit 的单位是 Byte 或 PAGE(4K)

所以....

#0000 Segment not present.

#0008 Base=00C2A000 Limit=0000FFFF Flags=9B USE32 Byte granularity

#0010 Base=0001DDB0 Limit=0000FFFF Flags=93 USE32 Byte granularity

#0018 Base=0000B3E0 Limit=0000FFFF Flags=9A USE16 Byte granularity

#0020 Base=0000B3E0 Limit=0000FFFF Flags=93 USE16 Byte granularity

#0028 Base=00C12000 Limit=00000000 Flags=82 Page granularity

#0030 Base=00C12000 Limit=00000000 Flags=93 USE32 Page granularity

#0038 Base=00C02000 Limit=00000000 Flags=93 USE32 Page granularity

#0040 Base=00000000 Limit=00000000 Flags=92 USE32 Byte granularity

#0048 Base=000B8000 Limit=0000FFFF Flags=92 USE32 Byte granularity

#0050 Base=0001F56C Limit=000007FF Flags=92 USE32 Byte granularity

#0058 Base=00000000 Limit=00000144 Flags=92 USE32 Page granularity

#0060 Base=00000000 Limit=00000144 Flags=93 USE32 Page granularity

#0068 Base=00127F48 Limit=0000C32F Flags=9B USE16 Byte granularity

#0070 Base=00134278 Limit=000028F7 Flags=93 USE16 Byte granularity

#0078 Base=00000000 Limit=00000000 Flags=92 USE16 Byte granularity

^^^^^Selector ^^存取权

Base 就是指这个Secector:00000000对应到线性记忆体的何处 ,也就是说将线性记

忆体从 Base 所指的地方开始长度为 Limit ,剪下来变成一个独立的区段 ,如果您

在该区段想看超过 LIMIT 长度的记忆体 ,则会发生保护模式错误...应用程式可拦

截所发生的中断适当的加以处理。

注意 ,Limit的单位可以是 byte ,也可以是page(4k) ,由 "G" 是否为 1 来决定

至於 Selector 的数值我猜想应该是被标上 8 的倍数吧 ,因为很多书都是如此介

绍它。

--------------------------------------------------------------------------

【 LDT 介绍 】

上面介绍了 GDT 可以设定很多个Secector ,而 LDT 则是在这些被定义出来

的Selector中再切割出更小的单元。也就是说 LDT 的资料长度只有 2 BYTE ,这

个值直接就是指 Selector。

※这个命令必需在最高权力下才能执行 ,所以笔者使用 386DEBUG 来执行 ,在传

统 Real Mode/V86 都不能执行。

C:\386debug 386debug.exp (改过的.exp档)

000C:0002743C 660F0007 SLDT [EDI]

-T

-D EDI

0014:00000000 28 00

根据 GDT 的资料查表得到下表 ,但是由於 0028 这段落禁止观看 ,所以我改看0030

的段落 ,因为它的 Base 是一样的。

#0028 Base=00C12000 Limit=00000000 Flags=82 Page granularity

#0030 Base=00C12000 Limit=00000000 Flags=93 USE32 Page granularity

-D 30:0

0030:00000000 FF 00 F0 CE 09 92 40 00-31 00 00 00 CA 9B C0 00 ..pN..@.1...J.@.

0030:00000010 31 00 00 00 CA 93 C0 00-FF FF 00 80 0B 92 40 00 1...J.@.......@.

0030:00000020 FF 00 F0 CE 09 92 40 00-4D 00 90 CE 09 92 40 00 ..pN..@.M..N..@.

0030:00000030 44 01 00 00 00 93 C0 00-00 00 00 00 00 92 40 00 D.....@.......@.

0030:00000040 FF FF 00 80 0B 92 40 00-00 00 00 00 00 92 40 00 ......@.......@.

0030:00000050 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

0030:00000060 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

0030:00000070 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................

-DL 0

#0004 Base=0009CEF0 Limit=000000FF Flags=92 USE32 Byte granularity

#000C Base=00CA0000 Limit=00000031 Flags=9B USE32 Page granularity

#0014 Base=00CA0000 Limit=00000031 Flags=93 USE32 Page granularity

#001C Base=000B8000 Limit=0000FFFF Flags=92 USE32 Byte granularity

#0024 Base=0009CEF0 Limit=000000FF Flags=92 USE32 Byte granularity

#002C Base=0009CE90 Limit=0000004D Flags=92 USE32 Byte granularity

#0034 Base=00000000 Limit=00000144 Flags=93 USE32 Page granularity

#003C Base=00000000 Limit=00000000 Flags=92 USE32 Byte granularity

#0044 Base=000B8000 Limit=0000FFFF Flags=92 USE32 Byte granularity

#004C Base=00000000 Limit=00000000 Flags=92 USE32 Byte granularity

#0054 Segment not present.

#005C Segment not present.

#0064 Segment not present.

#006C Segment not present.

#0074 Segment not present.

#007C Segment not present.

--------------------------------------------------------------------------

【 IDT 介绍 】

在以往中断向量表都是用 4 byte 来表示 ,但是在保护模式下则由 8 byte 表

示 ,至於那几个 byte 表示什麽 ,笔者还未搞懂 ,底下只弄懂几个。

C:\386debug 386debug.exp (改过的.exp档)

000C:00027434 660F010F SIDT [EDI]

-D EDI

0014:00000000 FF 07 6C F5 01 00 .. ..-.. .. .. .. .. .. .. ..

^^^^^^^^^^^线性记忆体位址

^^^^^长+1

因为该线性记忆体已对映到 50:0

#0050 Base=0001F56C Limit=000007FF Flags=92 USE32 Byte granularity

所以:

0050:00000000 00 34 08 00 00 EE 00 00-0A 34 08 00 00 EE 00 00 .4...n...4...n..

0050:00000010 14 34 08 00 00 EE 00 00-1E 34 08 00 00 EE 00 00 .4...n...4...n..

0050:00000020 28 34 08 00 00 EE 00 00-32 34 08 00 00 EE 00 00 (4...n..24...n..

0050:00000030 3C 34 08 00 00 EE 00 00-6C 16 C8 0F 00 8E 00 00

0050:00000040 50 34 08 00 00 EE 00 00-5A 34 08 00 00 EE 00 00 P4...n..Z4...n..

0050:00000050 64 34 08 00 00 EE 0

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有