注册 登录
编程论坛 汇编论坛

关于内存分段

heamer_c 发布于 2006-08-21 13:18, 1186 次点击
8086CPU有20为地址线,而8086CPU寄存器都是16 位的,为了使没一个内存单元都能被访问到,CPU在确定一个内存地址是采用逻辑嗲制来描述,即内存分段,可以把1MB内存地址分成若干段,最多64kb段每段16字节,最少16段每段64kb,那么分段是在CPU运行时机器电路自动进行,还是由程序代码的设置决定,?然后如果分了16段一段64kb那,现在用8086芯的机子编一16位程序,代码加上数据加上堆栈总的不到64kb,代码数据会不会想现代32为机那样处于同一个段呢,如果不能,为什么,如果能怎么实现?
3 回复
#2
cjdevil123452006-08-21 21:52

第一:首先在通常情况下,各段在存储器中的分配是由操作系统负责的.每个段可以独立占用64KB的存储区.
第二:一般根据程序或数据的大小来占用存储区.假设程序代码空间有8KB,数据有2KB,临时存放信息的堆栈有256B,此时段的分配方式是相临.这种方式与每个段占用64KB的分配方式相比较,8KB和256B均可以放在存储器内一个64KB的存储段区,也可以段的重叠

#3
heamer_c2006-08-22 14:50

那,64不是小于256吗?怎么能把256字节放在64里呢??如果能重叠那数据不就乱加覆盖了吗?就64个地儿怎么够256个人站呢?!

#4
heamer_c2006-08-22 14:53

第一:首先在通常情况下,各段在存储器中的分配是由操作系统负责的.每个段可以独立占用64KB的存储区.....

那么既然由存储器负责我们不求控制不住它了吗,如果我现在先让它一段16字节我如果不负责设置以下机器又怎么回知道呢??!

1