
举例说明8086中20位物理地址生成过程
1个回答
展开全部
现代内存容量太大比如256M,而计算机的数据线往往只有16位、32位或者64位(目前应用很少),他们所能他寻找到的地址空间最大不过是2^16(64K)、2^32(4M)或者2^64(16T),所以内存通常使用段页式存储。也就是将内存空间分成若干段,或者若干页,每段大小是数据线所能访问到的最大空间。在内存中的实际地址就是所谓的“物理地址”,而逻辑地址就是逻辑段管理内存而形成的。
比如在8086系统中,8086对外连接使用一个20位的线性地址唯一确定一个存储单元,也就是说:对于每个存储器单元都有的一个唯一的20位地址,我们称为该单元的物理地址或绝对地址。
8086在内部结构中和程序设计时采用逻辑段管理内存,就形成了逻辑地址。它的表达形式为“段基地址 : 偏移地址”。
逻辑地址=段基地址 : 偏移地址
段基地址(Segment)——逻辑段在主存中的起始位置,简称段地址。由于8086规定段开始于模16地址,所以省略低4位0不显式表达,段基地址就可以用16位数据表示。
偏移地址(Offset)——主存单元距离段起始位置的偏移量(Displacement)。由于限定每段不超过64KB,所以偏移地址也可以用16位数据表示。
这样同一个存储单元就即有物理地址,又有逻辑地址。但是请注意,物理地址是外部连接使用的、唯一的;而逻辑地址是内部和编程使用的、并不唯一。
物理地址和逻辑地址可以互相转换。
将逻辑地址中的段地址左移4位,加上偏移地址就得到20位物理地址。这里左移的4位是二进制位;如果用十六进制表达地址就是左移一位(不知道为什么,复习数制内容吧!还不知道为什么,看疑难解答吧!)。左移4位还可以表达为乘以16,即:段地址×16+偏移地址。
同一个物理地址可以对应多个逻辑地址形式。所以物理地址转换为逻辑地址,需要明确段基地址或偏移地址,然后同上原则确定另一个地址。
逻辑地址 1460H : 0100H 1380H : 0F00H
物理地址 14700H
于是,对于主存14700H单元,我们可以描述为在1460H(或1380H)段的100H(或F00H)单元,或者说主存1460H : 0100H(或1380H : 0F00H)单元。
比如在8086系统中,8086对外连接使用一个20位的线性地址唯一确定一个存储单元,也就是说:对于每个存储器单元都有的一个唯一的20位地址,我们称为该单元的物理地址或绝对地址。
8086在内部结构中和程序设计时采用逻辑段管理内存,就形成了逻辑地址。它的表达形式为“段基地址 : 偏移地址”。
逻辑地址=段基地址 : 偏移地址
段基地址(Segment)——逻辑段在主存中的起始位置,简称段地址。由于8086规定段开始于模16地址,所以省略低4位0不显式表达,段基地址就可以用16位数据表示。
偏移地址(Offset)——主存单元距离段起始位置的偏移量(Displacement)。由于限定每段不超过64KB,所以偏移地址也可以用16位数据表示。
这样同一个存储单元就即有物理地址,又有逻辑地址。但是请注意,物理地址是外部连接使用的、唯一的;而逻辑地址是内部和编程使用的、并不唯一。
物理地址和逻辑地址可以互相转换。
将逻辑地址中的段地址左移4位,加上偏移地址就得到20位物理地址。这里左移的4位是二进制位;如果用十六进制表达地址就是左移一位(不知道为什么,复习数制内容吧!还不知道为什么,看疑难解答吧!)。左移4位还可以表达为乘以16,即:段地址×16+偏移地址。
同一个物理地址可以对应多个逻辑地址形式。所以物理地址转换为逻辑地址,需要明确段基地址或偏移地址,然后同上原则确定另一个地址。
逻辑地址 1460H : 0100H 1380H : 0F00H
物理地址 14700H
于是,对于主存14700H单元,我们可以描述为在1460H(或1380H)段的100H(或F00H)单元,或者说主存1460H : 0100H(或1380H : 0F00H)单元。
参考资料: http://zhidao.baidu.com/question/41182962.html+修正

2023-06-12 广告
STM32F103C8T6是一款基于ARM Cortex-M3内核的微控制器,具有以下基本参数:1. 工作频率:72MHz2. 外部时钟:最高可达120MHz3. 存储器容量:64K bytes4. 数据总线宽度:32位5. 输入/输出端口...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询