计算机基地址和偏移地址概念
首先必须明白 cpu和内存的区别:
·cpu是中央处理器,内存是物理数据存放的地方。cpu不直接存放数据而是通过内存来存放数据。
·cpu和内存之间通过20条地址总线相连接,地址总线就是cpu通过地址找到对应的内存的物理数据的传递工具。
·计算机只能处理0,1 二进制数据,每一条线可以处理 0,1 两种类型数据,所以20根线总共能够组成 2^20=1048576个不相同的地址,也就是能搜索 1048576个地址范围内的内存。我们知道一个地址代表一个存储单元,一个存储单元能够存储 1byte数据,那么也就是1048576个地址能够找到 1048576个1byte数据=1M的数据,即20根地址总线总共能处理1M的内存数据。
·疑问?cpu的寻址能力只能16位而达不到20位,这怎么办呢?
cpu的地址都是使用16进制表示的,最多也能够寻址2^16=65536,说明只能处理64K的内存数据。天啦噜,64K内存的计算机,能用?当然不能用啦,于是,段的概念横空出世。段,理解起来可以是假设将1G的数据划分为 n个段,每一个段是64K(65536个地址),那么16位的寻址就能找到了这65536个地址了。
·肯定还是不理解,对吧。那就说说段地址吧!!!
·开始介绍段地址:每一个段的开头也就是每隔一个64K就是一个基地址(逻辑上基地址等于段地址),段内的数据的地址就是当前基地址的偏移地址。这时,段地址+偏移地址就能够找到真正的内存数据了。
·cpu表示的地址为:基地址:偏移地址(偏移地址相当于在首地址的基础上 移动的距离)
插播:(起始地址顾名思义;相对地址和偏移地址的概念差不多;只不过用在不同的场合;偏移地址就是相对于基地址的偏移量就像是相对距离;基地址是一个段的起始地址,一般的20位地址总线,基地址为16位;逻辑地址就是基地址和偏移地址的复合形式,逻辑地址= 基地址 : 偏移地址;线性地址只是一个概念,表示地址成线性递增;物理地址要通过基地址和偏移地址的计算才能得出,一般的20位地址总线,其物理地址为:基地址 X 16(十进制)(相当于在基地址后面添一个0)+ 偏移地址)
比如,0BAC:0100
0BAC是基地址,0100是偏移地址。0BAC是4位的十六进制,将它表示为16位的二进制数据为:0000 1011 1010 1100。在这里,我们必须要把它转换成20位(也就是5位的16进制) 才能在20位地址总线中传递,也才能达到1G的数据访问范围。
那怎么转换成20位就能让数据传递到内存中找到物理数据了呢?
内存的物理地址 = 基地址*16(十进制)+偏移地址
内存的物理地址 = 0BAC*16+0100 = 0BAC0 + 0100 = 0BBC0H;你看,0BBC0就是5位的十六进制数了,满足20位(4*5=20bit)就可以传递到内存了。所以,实际传递的二进制就是:0000 1011 1011 1100 0000,这样的话20根地址总线就能处理它了。
注意了,32位汇编,32根地址总线,它总共能够直接就找到2^32个地址,(即4294967296 byte数据 = 4G的内存),而且不再将内存分成一段一段的,所有的内存区域都是连续的呢!
附读: 1.基地址 = 段地址 × 16 ·逻辑上,基地址 = 起始地址,理论上不等于。 ·一般我们所的物理地址指的是某个单位的起始地址。这个某个单位是字节、字、或者某一段。 |
计算机基地址和偏移地址概念相关推荐
- 基地址和偏移地址的概念
首先必须明白 cpu和内存的区别 cpu 中央处理器 内存是物理数据存放的地方 cpu不直接存放数据而是通过内存来存放数据 cpu和内存之间通过20条地址总线相连接,地址总线就是cpu通过地址找到对应 ...
- 微型计算机原理偏移地址,微机原理试卷答案(B)
2008 -2009 学年第 一 学期闽江学院( B ) 适用年级专业:06物本 考试形式:闭卷 考试课程:微型计算机原理与应用 班级 姓名 学号 一.填空题 20% 1.8086CPU 从偶地址访问 ...
- 为什么要用段地址和偏移地址?
本质含义 对于8086CUP而言 是一个16位结构的CPU 其具有的结构特性: (1)运算器一次最多可以处理16位的数据: (2)寄存器的最大宽度为16位: (3)寄存器和运算器之间的通路为16位 除 ...
- 相对虚拟地址,虚拟地址,文件偏移地址
相对虚拟地址(RVA,Relative Virtual Address):RVA只是内存中的一个简单相对于PE文件装入地址的偏移位置,它是一个"相对地址",或称"偏移量& ...
- 段地址和偏移地址是什么
举个很简单的例子:如果说联合国用01表示中国,02表示美国,这里的01和02表示段地址.而各个国家的首都也是01,这个01就是偏移地址.那么0101就表示北京,0201表示华盛顿,这里段地址加偏移地址 ...
- 基于8086CPU微处理器的汇编学习之段地址与偏移地址的分析
人的记忆总是不靠谱的,早在几年前就看过汇编语言,由于没有总结下来资料,所以忘记了很多,所以重新梳理下汇编方面的知识,与君共勉. ------------------------------------ ...
- 【PE结构】由浅入深PE基础学习-菜鸟手动查询导出表、相对虚拟地址(RVA)与文件偏移地址转换(FOA)...
0 前言 此篇文章想写如何通过工具手查导出表.PE文件代码编程过程中的原理.文笔不是很好,内容也是查阅了很多的资料后整合出来的.希望借此加深对PE文件格式的理解,也希望可以对看雪论坛有所贡献.因为了解 ...
- IP地址和端口基本概念
这两天在使用proxychains设置代理上网的时候,遇到了一些原来学过的名词,但是只是生硬的对照着教程在走,但是里面一些概念不是很明白,这里遇到了就刚好记录.理解一下. 1. IP: IP地址是在网 ...
- 由浅入深PE基础学习-菜鸟手动查询导出表、相对虚拟地址(RVA)与文件偏移地址转换(FOA)...
0 前言 此篇文章想写如何通过工具手查导出表.PE文件代码编程过程中的原理.文笔不是很好,内容也是查阅了很多的资料后整合出来的.希望借此加深对PE文件格式的理解,也希望可以对看雪论坛有所贡献.因为了解 ...
最新文章
- Django2.0——模板渲染(一)
- 外贸网络推广浅析怎么能更有效地提升网站的收录?
- 2015年度最全微课堂笔记精华包
- 【转】简单介绍几个CDS视图聚合函数
- VS中怎样打开MSDN帮助文档
- breakcontinue
- safari浏览器横屏怎么设置_如何避免苹果safari自带浏览器“跟踪”你的信息!
- c语言怎么加分数,用C语言编程平均分数
- python读取指定路径txt文件-如何使用pandas读取txt文件中指定的列(有无标题)
- LabView学习笔记(五):数据类型综合实验
- 有关视图状态(ViewState)的一些问题
- 【转】JMeter学习(十八)JMeter测试Java(二)
- cmake_安装导入静态/动态库的三种方式(find_package INSTALL 使用绝对路径)
- Python 程序设计方法
- 闲谈输入法、MinGW、日文字体
- 深入理解Nginx负载均衡和反向代理_学习笔记
- Windows 80端口被System进程占用的解决
- 浅析webpack的原理
- Nlog日志记录组件使用
- SAP STMS导入队列显示队列末尾