关于386以上de寻址问题.

kou_ryou 2008-02-29 08:13:39
1.80386以上地址线是32位,那么寻址能力应该是4G啊,但是为什么现在的电脑只支持2G的内存呢?
2.8086是用CS:IP 20位寻址,但是386的32位是如何寻址的啊?也是16位段地址+16位偏移量么?还是说386的寄存器位数也增大了,变成了20位段地址+20位偏移量?
新手学习汇编,希望大家不吝赐教.
P.s 手工结贴,灌水无分
...全文
73 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kou_ryou 2008-02-29
  • 打赏
  • 举报
回复
谢谢大家,我明白了,结贴了
czlyc006 2008-02-29
  • 打赏
  • 举报
回复
1.80386以上地址线是32位,那么寻址能力应该是4G啊,但是为什么现在的电脑只支持2G的内存呢?
硬件支持4G,但软件上(Windows32位操作系统)对2GB以上的物理内存支持有瑕疵

2.8086是用CS:IP 20位寻址,但是386的32位是如何寻址的啊?也是16位段地址+16位偏移量么?还是说386的寄存器位数也增大了,变成了20位段地址+20位偏移量?
因为寄存器尺寸已经和地址线位数相等,故IA-32CPU是直接使用32位线性地址寻址,抛弃了8086的那套段式内存管理方法
用户 昵称 2008-02-29
  • 打赏
  • 举报
回复
2G的限制有文章说

芯片组支持的4GB地址空间中,有1MB分配给了DOS兼容存储区,1MB-2GB分配给了内存访问,而2GB-4GB的部分地址空间则优先分配给了显卡帧缓存,PCI/PCI-E设备和BIOS区域,而这一区域也被Intel称作内存映射I/O(MMIO)区域。

这样呢,本来的4G就变成了2G.
alan001 2008-02-29
  • 打赏
  • 举报
回复
386 用CS:EIP寻址,EIP是32位的,其他类似

另外,每个程序都用4G寻址范围(虚拟线性0-4G),虽然不是都占用完全
用户 昵称 2008-02-29
  • 打赏
  • 举报
回复
386也有段寄存器和段内寄存器,好像段内的是32位的,段的是16位的。所以段寄存器也就无实际意义了,只为和286等做兼容的。
guoxyj 2008-02-29
  • 打赏
  • 举报
回复
还没有看到386

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧