您好,欢迎访问这里是深圳市硕远科技有限公司!
戴尔服务器价格_IBM联想配置_浪潮代理-深圳市硕远科技有限公司
联系我们
戴尔服务器价格_IBM联想配置_浪潮代理-深圳市硕远科技有限公司
邮箱:2324898850@qq.com
电话:400-080-6079
地址:深圳市龙华区河背工业区108创业园A301
当前位置:主页 > 新闻动态 > 企业新闻 >

企业新闻

逻辑地址与物理地址的转换

发布时间:2022-12-13 07:03:07浏览次数:

最近一直在学8086,上课老师突然问了个这。对于问题“8086 CPU 能提供20位的地址信息,可直接对1M个存储单元进行访问,而CPU内部可用来提供地址信息的寄存器都是16位,那怎样用16位寄存器来实现20位地址寻址呢"明白了不少。

下图是8086的CPU架构。

那个年代,条件比较差,能凑合的就凑合,能共用的就共用。8086 CPU的地址总线针脚数据总线针脚就共用了。

8086是一个16位的CPU,数据(Data)总线就有16位,一次性可以传输16个比特位。和地址(Address)总线凑合着一起共用,于是就取名AD0-AD15。

地址总线却不止16个,还多出了A16-A19整整4个呢!这样有20个地址线,可以寻址1MB的内存了!

但是8086的寄存器都是16位的啊,只能存放16位的地址。于是用分段式存储管理的方法,把内存划分为最大64KB的小块,为什么是64KB呢,因为16位地址最多只能寻址这么大了。然后又加了几个叫做段寄存器的东西,指向这些块的开头,这样,通过段地址+段内偏移地址的方式,就能访问更多的内存了。

关于逻辑地址是允许在程序中编排的地址,8086的逻辑地址有段地址和段内偏移量两部分,表达形式为“段地址:段内偏移地址”。

逻辑地址和物理地址的转换?(期末考试会考的)
之前说20位的地址信息可以对1M个内存单元进行访问,就是说编址00000H~FFFFFH,而段寄器CS,DS,SS,ES即存放了这些地址的高4位,如12345H,则某个段寄存器便会存储1234H高4位信息,这即为段地址。
而段内偏移地址就是移动后相对于段地址的偏移量。
物理地址就是地址总线上提供的20位地址信息。物理地址=段地址*10H+段内偏移地址。段地址乘以10H是因为段地址当时是取高四位得到的,所以还原后要让段地址左移4位(10H = 10000B),例如(cs)= 20A8H,(IP)= 2008H,则物理地址为20A8H*10H+2008H = 22A88H。

注:段地址*16(十进制)+偏移地址=物理地址!

我的认识:物理地址表达方法是十六进制*16相当于把十六进制向前移了1位,

FFFFF(10485575)/1024=1023KB(0~1023KB),【2的20次方等于10485575/1024=1024kb】
1024KB等于1MB,所以段地址只用移一位在加上偏移地址,用【段地址:偏移地址】的方法就可以表达8086CPU索引的1MB了。

斜体为。

400-080-6079