逻辑地址与物理地址的转换
2016-05-25 23:39
246 查看
最近一直在学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。
注:段地址*16(十进制)+偏移地址=物理地址!
我的认识:物理地址表达方法是十六进制*16相当于把十六进制向前移了1位,
FFFFF(10485575)/1024=1023KB(0~1023KB),【2的20次方等于10485575/1024=1024kb】
1024KB等于1MB,所以段地址只用移一位在加上偏移地址,用【段地址:偏移地址】的方法就可以表达8086CPU索引的1MB了。
斜体为引用。
关于逻辑地址是允许在程序中编排的地址,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了。
斜体为引用。
相关文章推荐
- 开启Tomcat APR运行模式,优化并发性能
- C#文件流
- isupper字符串测试函数应用实例
- android源码解析(二十八)-->电源开关机按键事件流程
- JNI中很有用的jstring 与 const char* 的相互转换函数
- c++实验6-数组合并
- iOS-定位
- Hibernate.cfg.xml
- 基于训练数据的全局优化水下畸变图像复原
- HDU2222 Keywords Search [AC自动机模板]
- 获取Class实例的四种方法
- 数据结构与算法的分析
- HDU2222 Keywords Search [AC自动机模板]
- 二叉搜索树
- PRO-1:Day3 linux编译基础
- dstat下性能监控工具之----dstat
- CodeForces 614C Peter and Snow Blower
- VS中使用Entity Framework连接Mysql,添加Entity Data Model时向导闪退解决方案
- 杭电OJ 1029 暴力解除 合理利用数组 避免超时
- Python基础(六) 基础文件操作