实模式存储器寻址

1.内存单元的编址

*内存每个单元的地址在逻辑上都由两部分组成:

  • 段基地址
    指示存储单元在整个内存空间中处于哪个区域
  • 段内偏移
    指示存储单元在段中的相对位置(与段中第一个单元的距离)

在这里插入图片描述
段中的第一个单元称为段首,段首地址是0
内存的物理地址由16位段基地址和16位段内偏移组成,
对于段首地址,我们用4位表示段内偏移,这样就构成了一个20位地址
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如上图,物理地址可以写成一个表达式

  • 物理地址=段基地址*16+偏移地址
    为什么 *16呢?
    因为我们知道 *2就是左移一位,将段基地址左移4位,低位补4个0,就成了段首地址,2的4次方就是16,所以乘以16

  • 逻辑段
    我们能直接产生16位的地址,2的16次方的64k,所以管理的是64k个内存单元,1兆=16个64k,也就是我们只能把1兆的内存空间分成16个段,这叫物理上的分段
    但实际没有用物理上的分段模式,而是根据需要,不断地调整段的大小,可以挨着,可以一部分重合,也可以在一个区域重复使用(分时复用),这样就不是物理分段了,变成了逻辑上的概念,所以就成了逻辑段

2.段寄存器

用于存放相应逻辑段的段基地址
虽然可有2的16次方个逻辑段存在,但是它的类型只有4个
在这里插入图片描述
这4个逻辑段对应着4个类型的段寄存器,所以逻辑段的数量虽然很多,但是它的段寄存器只有下面4个:
在这里插入图片描述
所以每个程序模块里,最多有4个逻辑段,如果你觉得你的程序太大,不够用,那你就再写一个模块,当然这两个模块要分时运行,不能同时做

例:
在这里插入图片描述
在这里插入图片描述
一个内存单元的物理地址是不可能改变的,逻辑地址可能会变,如上图,因为同样的一个内存单元可能属于不同的逻辑段

总结如下:
在这里插入图片描述
在这里插入图片描述
基地址不是由程序员控制的,而是由操作系统控制的,

  • 逻辑段说明
    在这里插入图片描述

3.堆栈段

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值