逻辑地址(断地址,偏移地址)知识点回顾
为了准备考系统架构设计师,所以把以前的知识点回顾一下
1. 什么是逻辑地址
逻辑地址是用户编程是使用的地址,分为段地址和偏移地址两部分。
逻辑地址表示形式:3020:055AH---------(汇编语言中,数字后面加H表示16进制,hex简写)
2. 逻辑地址产生背景
8086cpu:地址寄存器16位,内存单元20位
8086 CPU 有 20 位的地址线,可以传送 20 位地址。每一根地址线都表示一个 bit,那么 20 个 bit 可以表示的最大值就是 2 的 20 次方。也就是说:最大可以定位到 1M 地址的内存,这称作 CPU 的寻址能力。
但是,8086 处理器却是 16 位的,因为:运算器一次最多可以处理 16 位的数据;寄存器的最大宽度为 16 位;寄存器和运算器之间的通路为 16 位;也就是说:在 8086 处理器的内部,能够一次性处理、传输、暂时存储的最大长度是 16 位,因此,我们说它是 16 位结构的 CPU。
访问存储器时,地址寄存器要先向地址总线发出地址信号(地址总线是专门用来存取内存地址的),而地址寄存器只有16位,所能访问的存储空间只有2^16=65536=64k, 达不到20位内存单元所提供的地址范围。
针对这种情况,就把内存地址分成若干段,每段由一些存储单元构成。用段地址指出是哪一段,偏移地址标明是段中的哪一个单元
3. 什么叫段地址?偏移地址?之间有什么关系?
段地址和偏移地址都是16位2进制数
段地址和偏移地址有多种组合,故存在多个地址组合指向同一个存储单元上
4. 逻辑地址唯一吗?
不唯一,因为段地址和偏移地址有多种组合,故存在多个地址组合指向同一个存储单元上
5. CPU执行程序时,采用的是逻辑地址还是物理地址?
物理地址--用户编程时采用的逻辑地址在cpu执行程序时都要转换成物理地址
这是由cpu的地址加法器完成的
6. 逻辑地址怎样转换为物理地址?
他们都是16位的,为了和20位地址总线匹配,会进行如下:先将cs寄存器的值左移四位,然后再与ip寄存器的值相加,这样进行转换,就得到了一个20位的数据大小了,如下所示:
真实物理地址 = 段基址 <<<< 4 + 段内偏移地址
转换时,先将16位的段地址作移4为,相当于乘以16或者16进制的10H,再和偏移地址相加。
转换公式为:
物理地址 = 段地址*10H + 偏移地址
如:将3020:055AH转换为物理地址:3020*10H(左移4位)+ 055AH = 3075AH
7. 段和偏移地址什么关系?
段是由存储单元构成的,段包含偏移地址对应的存储单元。即偏移地址对应的字节存储单元在段中。
8. 段的大小指的是什么?
指的是这个段包含存储单元的多少。
9. 将内存分段的依据,以及段的相关知识?
段地址和偏移地址都是16位进制数
每段最大64K字节单元(2^16=6335=64k),每段最小16个字节单元(硬件规定),也可以100个,1000个到最多达到65535个。
偏移地址范围:0000H --- FFFFH
10. 什么是小段?
规定每16字节单元为1小段
写的不对的地方,欢迎指正。