网站大量收购独家精品文档,联系QQ:2885784924

存储器管理机制.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
存储器管理机制

存储器管理机制   摘要:一个程序当中,有可以执行的指令代码,还有指令操作的各类数据等。遵循模块化程序设计思想,希望将相关的代码安排在一起,相关的数据安排在一起,于是(区)段的概念自然出现。一个段安排一类代码或数据。程序员编程时,可以很自然地把程序的各个部分放在相应的段中。对应用程序来说,常用到的段有DS、CS、ES、SS[1]。   关键词:段 存储空间 偏移地址 寻址   中图分类号:TP316 文献标识码:A 文章编号:1007-9416(2016)01-0000-00   1存储器的分段技术   内存空间的原始状态可以看成是以存储单元为基本单位构成的一张线性地址表,面对这样一整块的地址空间,是不好进行管理与使用的。16位微机采用分段的办法来管理与使用存储器,把存储器空间划分为几个段,如数据段DS,堆栈段SS,代码段CS,附加数据段ES等。每个段的长度最多为64KB,同时,每一个段必须开始于一个能被16整数除的存储单元地址,这意味着段起始地址的最低4位一定是零。这个段的起始地址叫段基地址,或段地址,并且存放在段寄存器中。段内部存储单元到段基址的距离叫偏移地址,偏移地址一般放在指针寄存器(如BX、IP、SP、SI、DI)中。   每个段可以独立地占用64KB的存储区,如图1所示。各段也可以重叠,如图2所示。   图2则是相互重叠的分配示例。CS=0200H、DS=2000H、SS=1C0DH,这样代码段、数据段和堆栈段的物理起始地址分别为02000H、20000H、1C0D0H。其中代码段大小为4KB,数据段占8KB,而堆栈段只有256B,SP=0300H。由于该程序没有使用附加段,所以没有设置ES值。从这里可以看出,各段大小应根据实际需要来分配,可以重叠。有时,甚至可以将所有4种段都集中在一个逻辑段内,形成一个短小紧凑的程序。   当然,每个存储单元的内容是不允许重叠而发生冲突的。这里所谓的重叠只是指每个段实际占用的大小可以根据实际需要来分配,而不一定占用64KB的最大段空间。   操作系统按段分配存储空间给用户程序存放代码或数据。因此,程序员在编写程序时要把存储器分成段,并在程序的开头设置各段寄存器,以定义所需要用到的几个段。   实际上,段的分配工作是由操作系统完成的。但是,操作系统也允许程序员在必要时指定所需占用的内存区,例如,准备生成.COM文件的汇编语言源程序时,程序员可指定代码段的起始地址从200H地址开始,利用伪指令ORG 200H定义。   2存储器的寻址方案   微处理器采用“段+偏移”[2]的方案对存储器空间进行寻址,其含义是通过段确定所寻址的存储区在存储器中的位置,再通过段内偏移地址进一步确定存储器单元在段内的位置,以此实现在1MB地址空间内的寻址操作。   (1)“段+偏移”的寻址方案:段地址装在段寄存器内,用来选定一个64KB存储器段的起始地址,偏移地址是自段的起始位置到所选的存储单元的距离,是16位的地址指针。所谓“段+偏移”的寻址方案是在程序中,先利用段寄存器的值找到是哪一段,然后通过偏移量指向段的哪一个存储单元。   (2)“段+偏移”寻址组合的潜在规则:“段+偏移”寻址组合,实际上就是段地址寄存器和表示偏移地址的其他寄存器的组合。微处理器对此有一套规则,即默认的组合关系,或隐性的组合关系,用于访问不同的存储器段。   微处理器默认的段寄存器与表示偏移地址寄存器的组合如表1所示。   表1 “段+偏移”的寻址组合[3]   段地址偏移地址主要用途CSIP指令地址SSSP或BP堆栈地址DSBX、DI、SI、8位数或16位数数据地址ES串指令的DI串目标地址DS串指令的SI串源地址既然是默认关系,因此在程序的指令中就不显式地写出段寄存器,例如,下列语句:   MOV AX,[BX]   表示是从数据段DS取得数据,但并没有地指明DS。   若有必要,微处理器使用“段跨段前缀”可以改变上述段寄存器和表示偏移地址寄存器的默认组合(CS:IP,SS:IP的组合不能改变),但必须显式地说明寻址所使用的段寄存器名。例如,跨段前缀“ES:”指明是从附加数据段取数据。   (3)“段+偏移”寻址方案的优点:存储器“段+偏移”的分段寻址方法虽然给程序设计带来一定的麻烦,但其优点很明显,主要表现在这种“段+偏移”寻址方案允许程序和数据在存储器内可重定位。   因为存储器用偏移地址在段内寻址,所以可以将整个存储器段移到存储器的任何地方,只要将段寄存器内容修改为程序所移到的新存储区的地址,而无需改变其偏移地址。   3结语   允许程序和数据重定位的特性,对于包含不同存储区域的通用计算机系统非常有利,因为各种微型计算机系统的存储器结构并不相同,但要求程序和数据能够重

文档评论(0)

130****9768 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档