⑴ 举例说明8086中20位物理地址生成过程
现代内存容量太大比如256M,而计算机的数据线往往只有16位、32位或者64位(目前应用很少),他们所能他寻找到的地址空间最大不过是2^16(64K)、2^32(4M)或者2^64(16T),所以内存通常使用段页式存储。也就是将内存空间分成若干段,或者若干页,每段大小是数据线所能访问到的最大空间。在内存中的实际地址就是所谓的“物理地址”,而逻辑地址就是逻辑段管理内存而形成的。
比如在8086系统中,8086对外连接使用一个20位的线性地址唯一确定一个存储单元,也就是说:对于每个存储器单元都有的一个唯一的20位地址,我们称为该单元的物理地址或绝对地址。
8086在内部结构中和程序设计时采用逻辑段管理内存,就形成了逻辑地址。它的表达形式为“段基地址 : 偏移地址”。
逻辑地址=段基地址 : 偏移地址
段基地址(Segment)——逻辑段在主存中的起始位置,简称段地址。由于8086规定段开始于模16地址,所以省略低4位0不显式表达,段基地址就可以用16位数据表示。
偏移地址(Offset)——主存单元距离段起始位置的偏移量(Displacement)。由于限定每段不超过64KB,所以偏移地址也可以用16位数据表示。
这样同一个存储单元就即有物理地址,又有逻辑地址。但是请注意,物理地址是外部连接使用的、唯一的;而逻辑地址是内部和编程使用的、并不唯一。
物理地址和逻辑地址可以互相转换。
将逻辑地址中的段地址左移4位,加上偏移地址就得到20位物理地址。这里左移的4位是二进制位;如果用十六进制表达地址就是左移一位(不知道为什么,复习数制内容吧!还不知道为什么,看疑难解答吧!)。左移4位还可以表达为乘以16,即:段地址×16+偏移地址。
同一个物理地址可以对应多个逻辑地址形式。所以物理地址转换为逻辑地址,需要明确段基地址或偏移地址,然后同上原则确定另一个地址。
逻辑地址 1460H : 0100H 1380H : 0F00H
物理地址 14700H
于是,对于主存14700H单元,我们可以描述为在1460H(或1380H)段的100H(或F00H)单元,或者说主存1460H : 0100H(或1380H : 0F00H)单元。
⑵ 8086CPU的地址线是20根,最大可寻址1MB的存储空间,为什么其物理地址范围从00000H~FFFFFH
答:8086CPU寻址范围1MB。因为8086CPU地址线为20条,2^20=1024KB,即1MB。8086系统中,指令仅给出16位地址,与寻址有关的寄存器也只有16位长,因此寻址范围只有64KB,为了寻址1MB,所以分成四个逻辑段。当CPU访问内存时,段寄存器的内容(段基址)自动左移4位(二进制),与段内16位地址偏移量相加,形成20位的物理地址。
采用分段结构的存储器中,任何一个逻辑地址都由段基址和偏移地址两部分构成,都是 16位二进制数。
物理地址:存储器的绝对地址,从00000H~FFFFFH,是CPU访问存储器的实际寻址地址(也称为绝对地址)
16位的段基址左移4位(相当于在段基址最低位后添4个“0”),然后与偏移地址相加获得物理地址,这相当于完成如下的地址运算:
物理地址=段基址×16+偏移地址
?
采用分段结构的存储器中,任何一个逻辑地址都由段基址和偏移地址两部分构成,都是 16位二进制数。
物理地址:存储器的绝对地址,从00000H~FFFFFH,是CPU访问存储器的实际寻址地址(也称为绝对地址)
16位的段基址左移4位(相当于在段基址最低位后添4个“0”),然后与偏移地址相加获得物理地址,这相当于完成如下的地址运算:
物理地址=段基址×16+偏移地址
⑶ 关于8086CPU计算物理地址问题
物理地址=段地址左移4位(即乘以16)+偏移地址
所以,(2988H<<4)+8000H=9880H+8000H=11880H
我的答案有错,用楼上几位的吧,
是29880H+8000H=31880H
⑷ 8086/8088存储器的物理地址是如何形成的
物理地址=段地址左移四位+偏移地址,,4,8086寻址采用“段:偏移”的方式罩或(如SS:BP),段地址寄存器和偏移地址寄存器都是16位长的,实际的线性地址是20位,由“(段 << 4) + 偏移”得到。
32位CPU一般寻址空间也是32位线,直接产生32位的线性地址(不考虑描述符、分页等机制),因此不存在上述现象。
另外,相关地,80286后就有了实模式与保护模式的区别(当然,物锋伍不仅仅是寻址方式的区别)。...,2,物理地址=基址X16+偏移地址。这里面的16是十进制数,化成16进制数正好是10H。式中的物理地址、基址、偏移地址都是16进基档制表示~,1,
⑸ 8086储存器系统中物理地址是怎么样构成的
8086的物理地址是20位的 ,而8086本身只凳告有16位,所以它的物理地址是由一个段基址和一个偏移地址构成的,例如:DS段的脊桥地址是4B3Ah,它对应的偏移地址SI是1000h,则对应的物枣野明理地址就是 :16*4B3Ah + 1000h = 4C3A0h
⑹ 8086/8088 CPU的20位物理地址是怎样形成的
(1)Intel的8位机8080CPU,数据总线(DB)为8位,地址总线(AB)为16位.那么这个16位地址信息也是要通过8位数据总线来传送,也是要在数据通道中的暂存器,以及在CPU中的寄存器和内存中存放的,但由于AB正好是DB的整数倍,故不会产生矛盾。
(2)但当上升到16位机后,Intel8086/8088CPU的设计由于当年IC集成技术和外封装及引脚技术的限制,不能超过40个引脚.但又感觉到8位机原来的地址寻址能力2^16=64KB太少了,但直接增加到16的整数倍即令AB=32位又是达不到的.故而只能把AB暂时增加4条成为20条.则2^20=1MB的寻址能力已经增加了16倍.但此举却造成了AB的20位和DB的16位之间的矛盾,20位地址信息既无法在DB上传送,又无法在16位的CPU寄存器和内存单元中存放.于是应运而生就产生了CPU段结构的原理。
"逻辑地址" 在学术文献中的解释:
1、这样该存储单元的地址就可以用段基值和段内偏移量来表示,段基值确定它所在的段居于整个存储空间的位置,偏移量确定它在段内的位置,这种地址表示方式称为逻辑地址,通常表示为逻辑地址:偏移量的形式(计算机网络全书)。
2、所谓逻辑地址是指按数据的逻辑块号给出的磁盘的位置(l块=512字l字=64位)而物理地址则是由磁盘的柱面、头、段等物理位置所确定的地址(逻辑运算)。
感觉这样的提问没有意义
建议自己下去查查资料
⑺ 8086CPU的20位物理地址是如何形成的
采用一种在内部用两个16位地址合成的方法来形成一个20位的物理地址。地址加法器采用物理地址=段地址×16+偏移地址合成物理地址