8086的存储器分段结构

8086的存储器分段结构

  8086的地址线为20位,最大寻址空间为220=1MB。8086内部的寄存器都是16位,对地址的运算也是16位,而16位的最大寻址范围为220=64KB。

  为了能在1MB空间内进行全范围寻址,即可访问到1MB存储器的任何一个存储单元,把lMB存储器分成若干段(segment),每一段最大为64KB,如图2.3所示。在分段时,要求段的起始单元的物理地址是16的整数倍,写成十六进制,最后一位应是0,即xxxXOH(x为任一个十六进制数码,H为十六进制后缀)。

  把段的起始单元的物理地址除以16的结果称为段地址,它为16位,写成十六进制是4位:XXXXH。显然,段地址决定了段在lMB空间中的位置。段内各存储单元相对段的起始单元都有一个距离,称为段内偏移量。

  在对内存进行操作时,段地址先确定下来,然后给出不同的段内偏移量,就可以实现段内的寻址。段地址也是可以改变的,即段在1MB空间中的位置是可变的,因而可实现1MB的全范围寻址。

  由于采用了分段结构,因此可以把每一个存储单元看成是具有两种类型的地址:物理地址和逻辑地址。物理地址就是实际地址,它具有20位的地址值,它惟一地标识1MB存储空间的某一存储单元。CPU与存储器之间的信息交换都是使用这个物理地址。逻辑地址是编程时所使用的地址,它由段地址和段内偏移量组成。逻辑地址和物理地址的关系为:物理地址=段地址16+段内偏移量。由逻辑地址形成物理地址是由总线接口部件中的电路实现的,如图2.4所示。

  对图中的转换关系可理解为:

  物理地址=(段地址+段内偏移量高12位16*)16**+段内偏移量低4位

  =段地址16+段内偏移量高12位+段内偏移量低4位

  =段地址16+段内偏移量

  *:段内偏移量高12位送加法器的低12位,相当于右移了4位,即除以16,再参加加法运算。

  **:相加结果送地址总线的高16位,相当于将相加结果先按最低位对齐再左移了4位。这把相加结果扩大了16倍。

  一个8086程序可以同时使用4个段:代码段、数据段、堆栈段和附加段。代码段用来存放程序代码,数据段用来存放程序中用到的数据,堆栈段作为堆栈,附加段也用来存放数据。

  存放这些段的段地址的寄存器分别是:

  代码段寄存器:CS(CodeSegment);

  数据段寄存器:DS(DataSegment);

  堆栈段寄存器:ss(stackSegment);

  附加段寄存器:ES(ExtraSegment)。

  这4个段寄存器都是16位的。一个完整的程序在存储器中的存储分布如图2.5所示。当然,不是每一个程序都要求包括4个段,可根据实际需要确定。

  例如,一个程序使用的数据不多,程序代码也不长,这时可以只建立代码段和堆栈段,在代码段中开辟一个区域作为数据区。此外,如果数据量很大,超过了一个段的最大容量(64KB),这时可以开辟几个数据段,程序中要用到某个数据段,只需将该数据段的段地址送到DS寄存器中。

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值