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

8086可直接寻址内存空间

  • 内存
  • 2024-07-31 07:01:56
  • 9776

一、8086/8088为什么能寻址那么大的空间?

8086/8088是16位CPU。其内部ALU和电子寄存器(如SP、IP、BX、BP、SI、DI)均为16位,因此仅对电子存储器进行处理。它是16位操作,即8086/8088在64KB范围内的直接寻址能力。事实上,8086/8088有20条地址线,其最大地址空间为1MB。

这就产生了一个矛盾,就是如何用一个16位的地址寄存器来表示一个物理地址内存。实际的解决方案是将1MB存储空间分成若干“段”,每个段不超过64KB。这样,一个20位的物理地址就可以用“16位基地址段:16位偏移量”的形式来表示(称为逻辑地址),其中该地址段存储在8086/段映射中。8388

扩展信息:

8086和8088这两款CPU的区别主要在于引脚数量,即宽度。它们连接到数据总线。

8086可以连接16位数据总线,一次总线操作可以读取一个字(80868088中为16位)数据,而8088只能连接8位数据。总线,一次总线操作可读取一个字。不过,两款CPU芯片的内部结构几乎完全相同。


二、8086内存地址空间这是8086CPU的内存。8086CPU是16位的,这意味着只有16条数据总线。必须通过北桥进行传输,才能将两个16位地址变成20位物理地址。用于寻址。它只能寻址1MB的Memory,目前的CPU是32位的,有32条地址总线,使用段页存储寻址,低12位是物理页偏移地址,中间10位是页表偏移地址。因此,在现代操作系统中,出现了相同的逻辑地址,但它在CPU的CR3寄存器中指向了不同的物理地址值。这使得CPU可以更加灵活地寻址4GB内存大型程序或者大内存,而1M的寻址能力已经可以满足使用需求了,就像几年前4GB内存是不可想象的,太大了,所以它是不存在的。需要使用64位CPU。32位CPU可以完全满足寻址需求。今天是4GB和8GB内存。计算机越来越普及,32位CPU已经不能满足现在的使用需求,所以出现了64位CPU,最新的64位CPU已经不再有这种架构了。架构发生了非常大的变化并且使用了Itanium。如果你按照书上写的8086汇编编程,你就会在实模式下编写程序。它不能大于1MB内存​转换为IA32汇编,这与你学的8086汇编略有不同。出于安全等方面的考虑,Windows已经不能以实模式运行程序了,希望龙泉大师的回答对您有用!顺便祝你生活愉快,和往常一样,我想说龙泉大师只是手工制作的,而且改了很多次


三、8086/8088可以寻址多少内存?

8086/8088CPU可以直接寻址1MB内存驱动器和64KBI/O端口。

1979年,INTEL推出8086/8088芯片。它仍然是一个16位微处理器,包含29,000个晶体管、4.77MHz的时钟频率、20位地址总线和1MB可用内存。记忆。它可以直接寻址2^20=1048576b=1MB的内存空间。有2^16=65536b=64KBI/O端口。

扩展信息:

8086/8088CPU的20位地址总线,AD7~AD0属于8系列-位地址/数据总线,时分复用,双向,三态。A15~A8属于地址线,为三态输出。A19/S6~A16/S3属于地址/状态、分时复用、输出、三态线。在总线周期的T1状态下,作为地址线,A19~A16输出4位高地址。

在总线周期的T2~T4状态下,作为状态线,S6~S3输出状态信息,包括:S6始终为0。S5表示当前总线使能状态标志IF中断。S5=1表示当前允许可屏蔽中断请求。S5=0表示禁止所有可屏蔽中断。S4和S3用于指示使用哪个段寄存器。