物理地址和逻辑地址的

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

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

 

关于逻辑地址是允许在程序中编排的地址,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。


我的认识:

8086CPU内存空间有1MB,但8086CPU的地址总线只有十六位,2的16次方=65536(0~65535)等于十六进制的FFFF,65536B/1024=64kb,也就是一个段的长度。

最后引进了段地址*16(十进制)+偏移地址=物理地址

因为物理地址表达方法是十六进制*16相当于把十六进制向前移了1位,4个二进制等于16进制,FFFFF(10485575)/1024=1023KB(0~1023KB),【2的20次方等于10485575/1024=1024kb】

1024KB等于1MB,所以段地址只用移一位在加上偏移地址,用【段地址:偏移地址】的方法就可以表达8086CPU1MB的访存能力了。

斜体为引用


目录
相关文章
|
存储 Linux
虚拟地址空间
虚拟地址空间
87 0
|
2月前
请求分页给出逻辑地址,求对应的物理地址
请求分页内存管理中如何根据逻辑地址计算物理地址的过程,包括确定页号、计算偏移量,并将其转换为物理地址。
109 1
请求分页给出逻辑地址,求对应的物理地址
|
7月前
|
存储 程序员 芯片
虚拟地址和物理地址之间的区别
【4月更文挑战第12天】
619 2
虚拟地址和物理地址之间的区别
|
7月前
|
存储 安全 内存技术
地址映射
地址映射
226 0
|
7月前
|
存储 芯片
什么是虚地址,什么是物理地址?
什么是虚地址,什么是物理地址?
162 0
|
存储 索引
逻辑地址与物理地址的转换
最近一直在学8086,上课老师突然问了个这。对于问题“8086 CPU 能提供20位的地址信息,可直接对1M个存储单元进行访问,而CPU内部可用来提供地址信息的寄存器都是16位,那怎样用16位寄存器来实现20位地址寻址呢"明白了不少。
173 0
|
存储
逻辑地址和物理地址转换
逻辑地址和物理地址转换
|
7月前
|
搜索推荐 Linux
内存学习(二):物理地址空间虚拟地址空间布局
内存学习(二):物理地址空间虚拟地址空间布局
363 0
|
7月前
|
索引
虚拟地址与物理内存地址是如何映射的
虚拟地址与物理内存地址是如何映射的
|
存储
逻辑地址转物理地址
若在一分页存储管理系统中,某作业的页表如表所示。已知页面大小为1024字节,试将逻辑地址1011,2148,3000,4000转换为相应的物理地址。
400 0
逻辑地址转物理地址