上一题下一题
跳转到
 
 
  世界如此多姿,发展如此迅速,窥一斑未必还能知全豹。但正如万花筒一样,每一个管窥都色彩斑斓。  
 
 
  知识通道 | 学习首页 | 教师首页 | PK首页 | 知识创造首页 | 企业首页 | 登录
 
本文对应知识领域
存储器分段和地址的形成
作者:未知 申领版权
2010年12月12日 共有 3243 次访问 【添加到收藏夹】 【我要附加题目
受欢迎度:

    

2.2  存储器分段和地址的形成

从8086开始采用分段的方法管理存储器。只有充分理解存储器分段的概念和存储器逻辑地址和物理地址的关系,才能熟练的使用8086/8088汇编语言。
    

2.2.1  存储单元的地址和内容

计算机存储信息的基本单位是一个二进制位,一位可存储一个二进制数:0或1。每8位组成一个字节,位编号如下所示:
    

7
    
6
    
5
    
4
    
3
    
2
    
1
    
0
    
 
    
 
    
 
    
 
    
 
    
 
    
 
    
 
    

IBM PC机的字长为16位,有2个字节组成,位编号如下所示:
    

15
    
14
    
13
    
12
    
11
    
10
    
9
    
8
    
7
    
6
    
5
    
4
    
3
    
2
    
1
    
0
    
 
    
 
    
 
    
 
    
 
    
 
    
 
    
 
    
 
    
 
    
 
    
 
    
 
    
 
    
 
    
 
    
存储器
    
 
    
……
    
0000H
    
34H
    
56780H
    
12H
    
56781H
    
56H
    
56782H
    
29H
    
56783H
    
……
    
 
    

在存储器里以字节为单位存储信息。为了正确的存放或取得信息,每一个字节单元给以一个存储器地址。地址从0开始编号,顺序地每次加1。在机器里,地址也是用二进制数来表示的。当然它是无符号整数,书写格式为十六进制数。
    一个存储单元中存储的信息曾为该存储单元的内容。图2.2示意了存储器中部分存储单元存放信息的情况。从图中可以看到, 地址为56780H的字节存储单元中的内容是34H,而地址为56781H的字节存储单元中的内容是12H。
    一个字存放到存储器要占用连续的两个字节单元。系统规定,当把一个字节存放到存储器时,其低字节存放在地址较低的字节单元中,其高字节   存放在地址较高的字节单元中。这样二个连续的字节单元就构成了一个字单元,字单元的地址采用它的低地址表示。例如,图中地址56780H的字单元的内容是1234H,而地址为834ABH的字单元的内容是6780H。
    上述存储原则称为“高高低低”原则。在以字节方式存取字时需要特
    别注意该原则,当以字方式存取字时,处理器自动采用该原则。
    四个连续的字节单元就构成了一个双字单元,双字单元的地址就是
    最低字节单元的地址。一个双字存放到存储器时也按照“高高低低”原则存储,也即高字在高地址字中,低字在低地址字中,也就是最高字节在最高地址字节单元中,最低字节在最低地址字节单元中。如图所示,地址为56780H的双字单元中存放的内容是29561234H。
    

2.2.2  存储器的分段

8086/8088CPU有20根地址线,可直接寻址的物理地址空间为1M字节(=)。系统存储器由以字节为单位的存储单元组成,存储单元的物理地址长20位,范围是00000H至FFFFFH。尽管8086/8088内部的ALU每次最多进行16位运算,存放存储单元地址偏移的指针寄存器(如IP、SP以及BP、SI、DI和BX)都是16位,但8086/8088通过对存储器分段使用段寄存器的方法有效地实现了寻址1M字节物理空间。
    根据需要把1M字节地址空间划分成若干逻辑段。每个逻辑段必须满足如下两个条件:第一,逻辑段的开始地址必须是16的倍数 ;第二,逻辑段的最大长度为64k。按照这两个条件,1M字节地址空间最多可划分成64k个逻辑段,最少也要划分成16个逻辑段。第一个条件与段寄存器长16位有关;第二个条件与指针寄存器长16位相关。
    逻辑段与逻辑段可以相连,也可以不相连,还可以部分重叠。图2.3 给出了若干逻辑段的划分情况。在图2.3 中,段B与段C部分重叠,段E与段D相连。
    这种存储器分段的方法不仅有利于实现寻址1M字节空间,而且也十分有利于对1M字节存储空间的管理。对实现程序的重定位和浮动,对实现代码数据的隔离,对充分利用存储空间,这种方法都有益。
    

2.2.3  物理地址的形成

由于段的起始地址必须是16的倍数,所以段起始地址有如下形式:
    bbbb bbbb bbbb bbbb 0000(二进制)
    用16进制可表示成XXX0(十六进制)。这种20位的段起始地址,可压缩表示成16位的XXXX(十六进制)形式。我们把20位段起始地址的高16位XXXX(十六进制)称为段值。显然,段起始地址等与段值乘16(即左移4位)。要访问的某一个存储单元总是属于某个段。我们把存储单元的地址与所在段的起始地址的差称为段内偏移,简称偏移。在一个段内,通过偏移可指定要访问的存储单元,或者说要访问的存储单元可由偏移来指定。在整个1M地址空间中,存储单元的物理地址等与段起始地址加上偏移。
    于是,存储单元的逻辑地址由段址和偏移两部分组成,用如下形式表示:
    段值:偏移
    根据逻辑地址可方便地得到存储单元的物理地址,计算公式如下:
    物理地址=段值×16 偏移
    通过移位和算术加可容易地实现上述公式,图2.4 是物理地址产生的示意图。例如,用16进制表示的逻辑地址1234:3456H多对应的存储单元的物理地址为15796H。
    由于段可以重叠,所以一个物理地址可用多个逻辑地址表示。图2.5  是这样的一个例子,其中存储单元的物理地址是12345H,标出的两个重叠段的段址分别是1002H和1233H,在对应段内的偏移分别是2325H和0015H。
    采用段值和偏移构成逻辑地址后,段值由段寄存器给出,偏移可由指令指针IP、堆栈指针SP和其他可作为存储器指针使用的寄存器(SI、DI、BX和BP)给出,偏移还可直接用16位数给出。指令中不使用物理地址,而是使用逻辑地址,由总线接口单元BIU按需要根据段值和偏移自动形成20位物理地址。
    
    
    
    

 

相关新闻

每一个程序员要遵守的一些优秀编程风格
《VB程序设计基础》选择题
设计模式之Iterator
设计模式之Visitor
设计模式之Interpreter(解释器)
设计模式之Mediator(中介者)
设计模式之Strategy(策略)
设计模式之State
设计模式之Command
设计模式之Chain of Responsibility(职责链)

您可能对这些感兴趣  

干货分享|10本最受国外孩子喜爱的英文词典——上
从孩子的表现看父母的缺点!请家长对号入座,看看你是哪一类?
20条制作PPT的视觉原则
培训简史:培训者必知的历史轨迹
广田丰管理培训生人才培养调查报告
第4讲 作为上司的职业经理
第3讲 作为同事的职业经理
第2讲 作为下属的职业经理
第1讲 培养经理人的管理素养
酒店前台新员工上岗培训计划

题目筛选器
日期:
类型:
状态:
得分: <=
分类:
作者:
职业:
关键字:
搜索

 
 
 
  焦点事件
 
  知识体系
 
  职业列表
 
 
  最热文章
 
 
  最多引用文章
 
 
  最新文章
 
 
 
 
网站介绍 | 广告服务 | 招聘信息 | 保护隐私权 | 免责条款 | 法律顾问 | 意见反馈
版权所有 不得转载
沪ICP备 10203777 号 联系电话:021-54428255
  帮助提示    
《我的太学》是一种全新的应用,您在操作中遇到疑问或者问题,请拨打电话13564659895,15921448526。
《我的太学》