当前位置:首页 > 内存 > 正文

8086cpu内存

  • 内存
  • 2024-08-06 05:32:19
  • 7166

一、8086cpu使用的存储器为什么要分段?8086/8088CPU的寄存器是16位,最大值是FFFF,即64K,而8086/8088的内存是640K显然,一个寄存器无法找到大于64K的地址,所以CS寻址方式使用段地址加上偏移地址。:IP,使最大寻址范围扩展到FFFFF,即640K,从而满足DOS操作系统的需要。
80386以上的CPU寄存器都是32位,最大能表示的地址是FFFFFFFF,也就是4G只要内存不超过4G,所有的内存地址都可以用一个寄存器来定位,那么80386以上的CPU中取消了分段的概念。当然,80386以上的CPU仍然兼容8086/8088的指令模式,即实模式。


二、8086内存地址空间这是8086CPU的内存,8086CPU是16位的,这意味着只需要通过北桥传输16条数据总线即可将两个16位地址转换为一个20位物理地址。用于寻址。它只能寻址1MB。目前的内存和CPU都是32位的,有32条地址总线和32条数据总线,使用段页存储来寻址。高10位是目录表偏移地址,低12位是物理页偏移。移位地址,中间10位是页表偏移地址。因此,在现代操作系统中,经常会出现同一个逻辑地址,但在CPU中的CR3寄存器中指向不同的物理地址值。这使得CPU能够更灵活地寻址4GB内存。不再是原来8086CPU的1MB寻址能力。8086CPU是1978年的产品,当时还没有大型程序,也没有大内存,1MB的寻址能力已经能够满足使用的需要。就像几年前一样,4GB内存是不可想象的,太大了,所以没有必要使用64位CPU。32位CPU完全可以满足寻址需求。如今4GB、8GB内存已经越来越流行,32位CPU已经不能满足现在的使用需求,所以64位CPU就出现了,最新的64位CPU已经没有更多这种架构了。架构发生了很大的变化,并且使用了Itanium系统,像从实模式到保护模式的转换这样的细节我就不赘述了。如果你按照书上写的8086汇编编程,你就会写出实模式程序。它不能大于1MB内存。它使用,但普通程序不会使用超过那么多的内存,并且当前的各种编程语言都转换为IA32汇编,这与你学习的8086汇编略有不同。事实上,出于安全等方面的考虑,当前的Windows已经不能再以实模式运行程序了。希望龙泉大师的回答对您有所帮助!祝您生活愉快!顺便说一下,像往常一样,我想说龙泉大师只是手工制作的,并且修改了很多次