关于内存分段
8086CPU有20为地址线,而8086CPU寄存器都是16 位的,为了使没一个内存单元都能被访问到,CPU在确定一个内存地址是采用逻辑嗲制来描述,即内存分段,可以把1MB内存地址分成若干段,最多64kb段每段16字节,最少16段每段64kb,那么分段是在CPU运行时机器电路自动进行,还是由程序代码的设置决定,?然后如果分了16段一段64kb那,现在用8086芯的机子编一16位程序,代码加上数据加上堆栈总的不到64kb,代码数据会不会想现代32为机那样处于同一个段呢,如果不能,为什么,如果能怎么实现?
第一:首先在通常情况下,各段在存储器中的分配是由操作系统负责的.每个段可以独立占用64KB的存储区.
第二:一般根据程序或数据的大小来占用存储区.假设程序代码空间有8KB,数据有2KB,临时存放信息的堆栈有256B,此时段的分配方式是相临.这种方式与每个段占用64KB的分配方式相比较,8KB和256B均可以放在存储器内一个64KB的存储段区,也可以段的重叠