关于“实模式下能否访问1M以上内存”

本文探讨了80x86 CPU在实模式和保护模式下如何形成物理地址,指出在实模式下,尽管段寄存器的“看得见部分”仅涉及1M内存,但CPU实际地址计算不受此限制,因此实模式同样可以访问1M以上的内存。通过对比实模式和保护模式的区别,强调了地址形成过程与工作模式无关,实模式下也能完成通常认为需要保护模式才能完成的任务。
摘要由CSDN通过智能技术生成

2009-07-29 17:43

CPU上电后,从ROM中的BIOS开始运行,而Intel文档却说80x86 CPU上电后总是从最高内存下16字节开始执行。实际上,BIOS在内存的最顶端64K(FFFF0000H)和1MB之下的64KB(F0000H)处都出现。

在实模式下,CPU用段寄存器左移4位与偏移量相加,形成物理地址;在保护模式下,则是用段描述符中的基地址加上偏移量,形成物理地址。这两者其实是一样的,当80286推出时,其地址空间从8086的20位变成了24位,自然的,段寄存器和指针都被加大了,只是由于保护的原因,加大的部分没有被程序“看到”,到了80386之后,地址又从24位加大到了32位。

在8086中,CPU只有“看得见的部分”(即1M)。但是在80286之后,在“看不见的部分”中已经包含了地址值,“看得见的部分”就退化为一个标号,不再参与地址形成的运算了。地址的形成总是从“不可看见部分”取出基址值与偏移相加形成地址。也就是说在是模式下,当一个段寄存器被装入一个值时,“看不见的部分”的界限被设成FFFFH,基址部分将装入值左移4位,属性部分设成16位0特权级。这个过程与保护模式时装入的一个段寄存器是同理的,只是保护模式的“不可见部分”是从描述表中取值,而是模式是一套固定的过程。

对于CPU在形成地址时,是没有实模式与保护模式之分的,他只管用基址(即“不可见部分”)去加上偏移量。实模式与保护模式的差别实际上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值