在dos实模式下直接存取4gb内存

在DS实模式下直接存取4GB内存虽然有许多书籍对对保护模式作解释,但没有一一本能简单明了地解释清楚,,冗长烦杂的术语让人看着想想打瞌睡,甚至还有许多用汇汇编写的保护模式试验程序,,事实上用语言本身就可以做做保护模式的进出工作。我们们可能知道PU上电后从R中中的BS开始运行,而tl文文档却说80x86UP上电电总是从最高内存下16字节节开始执行,那么BS是处在在内存的最顶端64K还是11之下的64K处呢?事实上上在这两个地方都同时出现。。为什么?为了弄清楚以上上问题,首先要了解PU是如如何处理物理地址的?真的是是在实模式下用段寄存器左移移4位与偏移量相加,在保护护模式下用段描述符中的基地地址加偏移量而两者是毫无关关联的吗?答案是两者其实是是一样的。当tl把802886推出时其地址空间变成了了24位,从8086的200位到24位,十分自然地要要加大段寄存器才行,实际上上它们都被加大了,只是由于于保护的原因加大的部分没有有被程序看见,到了803886之后地址又从24位加大大到32位。整个段寄存器如如下图所示:@@12A008400GF;图1@@在8086中PU只有“看看得见部分”,从而也直接参参与了地址形成运算,但在880286之后,在“看不见见部分”中已经包含了地址值值,“看得见部分”就退化为为只是一个标号再也不用参与与地址形成运算了。地址的形形成总是从“不可看见部分””取出基址值与偏移相加形成成地址。也就是说在实模式下下当一个段寄存器被装入一个个值时,“看不见部分”的界界限被设成FFFFH,基址址部分才是要装入值左移4位位,属性部分设成16位0特特权级。这个过程与保护模式式时装入一个段存器是同理的的,只是保护模式的“不可见见部分”是从描述表中取值,,而实模式是一套固定的过程程。对于PU在形成地址时时,是没有实模式与保护模式式之分的,它只管用基址去加加上偏移量。实模式与保护模模式的差别实际上只是保护处处理部件是否工作得更精确而而已,比如不允许代码段的写写入。实模式下的段寄存装入入有固定的形成办法从而也就就不需要保护模式的“描述符符”了,因此保持了与80886/8088的兼容性。而而“描述符”也只是为了装入入段寄存器的“不可见部分””而设的。从上面的“整个个段寄存器”可见PU的地址址形成与“看得见部分”的当当前值毫无关系,这也解释了了为什么在刚进入保护模式时时后面的代码依然被正确地运运行而这时代码段寄存器S的的值却还是进入保护模式前的的实模式值,或者从保护模式式回到实模式时代码段S被改改变之前程序是正常地工作,,而不会“突变”到S左移44位的地址上去,比如在保护护模式时S是08H的选择器器,到了实模式时S还是088H但地址不会突然变成800H加上偏段量中去。因为地地址的形成不理会段寄存器““看得见部分”的当前值,这这一个值只是在被装入时对PPU有用。地址的形成与PPU的工作模式无关,也就是是说实模式与0特权级保护模模式不分页时是一模一样的。。明白了这一机理,在实模式式下一样可以处理通常被认为为只有在保护模式才能做的事事,比如访问整个机器的内存存。可以不必理会保护模式下下的众多术语,或者更易于理理解,如选择器就是“看得见见部分”,描述符是为了装入入“不可见部分”而设的。作为验证PU的这种机理,这这里写了一个实模式下访问44GB内存的程序。有一些书书籍也介绍有同样功能的汇编编程序,但它们都错误地认为为是利用80386芯片的设设计疏漏。实际上tl本身就就在使用这种办法,使得PUU上电时能从FFFFFFFF0H处开始第一条指令,这这种技术在286之后的每一一台机器每一次冷启动时都使使用,只是我们不知道罢了。。PU上电也整个代码段寄存存器是这样的:@@12AA08401GF;图2@@@P=0000FFF0HH这样S∶P形成了FFFFFFFF0H的物理地址,,当PU进行一次远跳转重新新装入S时,基址就变了。为了访问4G内存空间,必须须有一个段寄存器的“不可见见部分”的界限为4G-1,,基址为0,这样就包含了44GB内存,不必理会可见部部分的值。显然要让段寄存器器在实模式下直接装入这些值值是不可能的。唯一的办法是是让PU进入一会儿保护模式式在装入了段寄存器之后马上上回到实模式。进入保护模模式十分简单,只要建好GDDT把R寄...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

文秘专家
机构认证
内容提供者

1

确认删除?