在8086/8088系统中,内存分段的主要目的是为了方便内存管理,使得16位寄存器可以用来寻址20位内存空间。段的最大大小为64KB,最小大小为16B。
内存一般用来保存程序的中间结果,并快速为后续指令提供操作数,从而避免将中间结果存入内存再读取内存的操作。
由于内存的数量和容量有限,不可能将所有的中间结果都存储在内存中。因此,必须对内存进行合理的调度。根据指令的要求,管理和安排合适的寄存器,避免操作数过多的传送操作。
8086/8088CPU可以直接寻址1MB的内存空间。直接寻址需要20位地址码,而所有内部寄存器都是16位的,只能直接寻址6KB,所以采用了分段技术。来解决。将1MB的存储空间划分为多个逻辑段,每个段的最大长度为64KB,最小长度为16B。这些逻辑段在整个存储空间中是可浮动的。
扩展信息:
8086/8088CPU内部有4个16位段寄存器,分别是代码段寄存器CS、数据段寄存器DS、堆栈段寄存器SS和附加段寄存器ES给出了对应逻辑段的首地址,称为“段基地址”。段基地址和段偏移地址组合起来形成20位物理地址。段偏移地址可以存储在寄存器或内存中。
当程序较小时,代码段、数据段、堆栈段可以放在一个段中,即包含在64KB以内。当程序或数据较大,超过64KB时,那么可以定义多个代码段或数据段、堆栈段、附加段。
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用于指示正在使用哪个段寄存器。