⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000000.htm

📁 80x86保护模式教程
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<HTML><HEAD>  <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>section&nbsp;1&nbsp;of&nbsp;1&nbsp;of&nbsp;file&nbsp;protect.zip&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;┌┐┌┐∞&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;【&nbsp;80386保护模式简介&nbsp;】&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;┘└┘└┘&nbsp;<BR>&nbsp;<BR>--------------------------------------------------------------------------&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;在保护模式下有很多新的名词&nbsp;,包含&nbsp;GDT.LDT.IDT&nbsp;以及&nbsp;CR0-CR3&nbsp;,笔者对保护&nbsp;<BR>模式并不清楚&nbsp;,所以底下资料可能有错误。这里使用大量的线性记忆体观念&nbsp;,请您&nbsp;<BR>一定要从头往後看&nbsp;,否则很可能会看不懂&nbsp;,且必须懂线性记忆体计算方式。&nbsp;<BR>&nbsp;<BR>--------------------------------------------------------------------------&nbsp;<BR>【&nbsp;GDT&nbsp;介绍&nbsp;】&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;在真实模式下每个区段都等於64K&nbsp;,可是保护模式下每个区段的大小却是可变动&nbsp;<BR>的&nbsp;,每个区段有多大呢&nbsp;,就是由&nbsp;GDT&nbsp;来决定。&nbsp;<BR>&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;您可以用&nbsp;SGDT&nbsp;CS:[BX]&nbsp;的方式将&nbsp;GDT&nbsp;的值读出&nbsp;,它的长度为&nbsp;6&nbsp;BYTE&nbsp;,底下&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;是笔者写的小程式读出。&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;XXXX:0000&nbsp;&nbsp;FF&nbsp;0F&nbsp;00&nbsp;20&nbsp;C0&nbsp;00&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^^^^^^^^^^^GDT表所在的线性记忆体位址&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^^^^^GDT表长度+1&nbsp;<BR>&nbsp;<BR>将此表资料读出来.&nbsp;<BR>X:00C02000&nbsp;00&nbsp;00&nbsp;00&nbsp;00&nbsp;00&nbsp;00&nbsp;00&nbsp;00-FF&nbsp;FF&nbsp;00&nbsp;A0&nbsp;C2&nbsp;9B&nbsp;40&nbsp;00&nbsp;...........&nbsp;<A HREF="mailto:B.@.">B.@.</A>&nbsp;<BR>X:00C02010&nbsp;FF&nbsp;FF&nbsp;B0&nbsp;DD&nbsp;01&nbsp;93&nbsp;40&nbsp;00-FF&nbsp;FF&nbsp;E0&nbsp;B3&nbsp;00&nbsp;9A&nbsp;00&nbsp;00&nbsp;..0]<A HREF="mailto:..@...`3....">..@...`3....</A>&nbsp;<BR>X:00C02020&nbsp;FF&nbsp;FF&nbsp;E0&nbsp;B3&nbsp;00&nbsp;93&nbsp;00&nbsp;00-00&nbsp;00&nbsp;00&nbsp;20&nbsp;C1&nbsp;82&nbsp;80&nbsp;00&nbsp;..`3.......&nbsp;A...&nbsp;<BR>X:00C02030&nbsp;00&nbsp;00&nbsp;00&nbsp;20&nbsp;C1&nbsp;93&nbsp;C0&nbsp;00-00&nbsp;00&nbsp;00&nbsp;20&nbsp;C0&nbsp;93&nbsp;C0&nbsp;00&nbsp;...&nbsp;<A HREF="mailto:A.@....">A.@....</A>&nbsp;<A HREF="mailto:@.@.">@.@.</A>&nbsp;<BR>X:00C02040&nbsp;00&nbsp;00&nbsp;00&nbsp;00&nbsp;00&nbsp;92&nbsp;40&nbsp;00-FF&nbsp;FF&nbsp;00&nbsp;80&nbsp;0B&nbsp;92&nbsp;40&nbsp;00&nbsp;<A HREF="mailto:......@.......@.">......@.......@.</A>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.&nbsp;<BR>它所代表的意思是如下图所示:(每组&nbsp;8&nbsp;byte)&nbsp;<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;┌——————————————————————┐&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Limit&nbsp;bit&nbsp;0-15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;0&nbsp;byte&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;├——————————————————————┤&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Base&nbsp;bit&nbsp;0-15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;2&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;├——————————┬———————————┤&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;存取权&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;&nbsp;&nbsp;&nbsp;Base&nbsp;bit&nbsp;16-23&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;4&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;├——————————┼———————————┤&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7│&nbsp;&nbsp;&nbsp;Base&nbsp;bit&nbsp;24-31&nbsp;&nbsp;&nbsp;│G│..│limit&nbsp;bit&nbsp;16-19│&nbsp;6&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;└——————————┴———————————┘&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;G&quot;代表&nbsp;Limit&nbsp;的单位是&nbsp;Byte&nbsp;或&nbsp;PAGE(4K)&nbsp;<BR>&nbsp;<BR>所以....&nbsp;<BR>&nbsp;<BR>#0000&nbsp;&nbsp;Segment&nbsp;not&nbsp;present.&nbsp;<BR>#0008&nbsp;&nbsp;Base=00C2A000&nbsp;&nbsp;Limit=0000FFFF&nbsp;&nbsp;Flags=9B&nbsp;&nbsp;USE32&nbsp;&nbsp;Byte&nbsp;granularity&nbsp;<BR>#0010&nbsp;&nbsp;Base=0001DDB0&nbsp;&nbsp;Limit=0000FFFF&nbsp;&nbsp;Flags=93&nbsp;&nbsp;USE32&nbsp;&nbsp;Byte&nbsp;granularity&nbsp;<BR>#0018&nbsp;&nbsp;Base=0000B3E0&nbsp;&nbsp;Limit=0000FFFF&nbsp;&nbsp;Flags=9A&nbsp;&nbsp;USE16&nbsp;&nbsp;Byte&nbsp;granularity&nbsp;<BR>#0020&nbsp;&nbsp;Base=0000B3E0&nbsp;&nbsp;Limit=0000FFFF&nbsp;&nbsp;Flags=93&nbsp;&nbsp;USE16&nbsp;&nbsp;Byte&nbsp;granularity&nbsp;<BR>#0028&nbsp;&nbsp;Base=00C12000&nbsp;&nbsp;Limit=00000000&nbsp;&nbsp;Flags=82&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Page&nbsp;granularity&nbsp;<BR>#0030&nbsp;&nbsp;Base=00C12000&nbsp;&nbsp;Limit=00000000&nbsp;&nbsp;Flags=93&nbsp;&nbsp;USE32&nbsp;&nbsp;Page&nbsp;granularity&nbsp;<BR>#0038&nbsp;&nbsp;Base=00C02000&nbsp;&nbsp;Limit=00000000&nbsp;&nbsp;Flags=93&nbsp;&nbsp;USE32&nbsp;&nbsp;Page&nbsp;granularity&nbsp;<BR>#0040&nbsp;&nbsp;Base=00000000&nbsp;&nbsp;Limit=00000000&nbsp;&nbsp;Flags=92&nbsp;&nbsp;USE32&nbsp;&nbsp;Byte&nbsp;granularity&nbsp;<BR>#0048&nbsp;&nbsp;Base=000B8000&nbsp;&nbsp;Limit=0000FFFF&nbsp;&nbsp;Flags=92&nbsp;&nbsp;USE32&nbsp;&nbsp;Byte&nbsp;granularity&nbsp;<BR>#0050&nbsp;&nbsp;Base=0001F56C&nbsp;&nbsp;Limit=000007FF&nbsp;&nbsp;Flags=92&nbsp;&nbsp;USE32&nbsp;&nbsp;Byte&nbsp;granularity&nbsp;<BR>#0058&nbsp;&nbsp;Base=00000000&nbsp;&nbsp;Limit=00000144&nbsp;&nbsp;Flags=92&nbsp;&nbsp;USE32&nbsp;&nbsp;Page&nbsp;granularity&nbsp;<BR>#0060&nbsp;&nbsp;Base=00000000&nbsp;&nbsp;Limit=00000144&nbsp;&nbsp;Flags=93&nbsp;&nbsp;USE32&nbsp;&nbsp;Page&nbsp;granularity&nbsp;<BR>#0068&nbsp;&nbsp;Base=00127F48&nbsp;&nbsp;Limit=0000C32F&nbsp;&nbsp;Flags=9B&nbsp;&nbsp;USE16&nbsp;&nbsp;Byte&nbsp;granularity&nbsp;<BR>#0070&nbsp;&nbsp;Base=00134278&nbsp;&nbsp;Limit=000028F7&nbsp;&nbsp;Flags=93&nbsp;&nbsp;USE16&nbsp;&nbsp;Byte&nbsp;granularity&nbsp;<BR>#0078&nbsp;&nbsp;Base=00000000&nbsp;&nbsp;Limit=00000000&nbsp;&nbsp;Flags=92&nbsp;&nbsp;USE16&nbsp;&nbsp;Byte&nbsp;granularity&nbsp;<BR>^^^^^Selector&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^^存取权&nbsp;<BR>&nbsp;<BR>Base&nbsp;就是指这个Secector:00000000对应到线性记忆体的何处&nbsp;,也就是说将线性记&nbsp;<BR>忆体从&nbsp;Base&nbsp;所指的地方开始长度为&nbsp;Limit&nbsp;,剪下来变成一个独立的区段&nbsp;,如果您&nbsp;<BR>在该区段想看超过&nbsp;LIMIT&nbsp;长度的记忆体&nbsp;,则会发生保护模式错误...应用程式可拦&nbsp;<BR>截所发生的中断适当的加以处理。&nbsp;<BR>注意&nbsp;,Limit的单位可以是&nbsp;byte&nbsp;,也可以是page(4k)&nbsp;,由&nbsp;&quot;G&quot;&nbsp;是否为&nbsp;1&nbsp;来决定&nbsp;<BR>&nbsp;<BR>至於&nbsp;Selector&nbsp;的数值我猜想应该是被标上&nbsp;8&nbsp;的倍数吧&nbsp;,因为很多书都是如此介&nbsp;<BR>绍它。&nbsp;<BR>&nbsp;<BR>--------------------------------------------------------------------------&nbsp;<BR>【&nbsp;LDT&nbsp;介绍&nbsp;】&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;上面介绍了&nbsp;GDT&nbsp;可以设定很多个Secector&nbsp;,而&nbsp;LDT&nbsp;则是在这些被定义出来&nbsp;<BR>的Selector中再切割出更小的单元。也就是说&nbsp;LDT&nbsp;的资料长度只有&nbsp;2&nbsp;BYTE&nbsp;,这&nbsp;<BR>个值直接就是指&nbsp;Selector。&nbsp;<BR>&nbsp;<BR>※这个命令必需在最高权力下才能执行&nbsp;,所以笔者使用&nbsp;386DEBUG&nbsp;来执行&nbsp;,在传&nbsp;<BR>&nbsp;&nbsp;统&nbsp;Real&nbsp;Mode/V86&nbsp;都不能执行。&nbsp;<BR>&nbsp;<BR>C:\&gt;386debug&nbsp;386debug.exp&nbsp;&nbsp;&nbsp;(改过的.exp档)&nbsp;<BR>000C:0002743C&nbsp;660F0007&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SLDT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[EDI]&nbsp;<BR>-T&nbsp;<BR>-D&nbsp;EDI&nbsp;<BR>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -