‘壹’ 急急!!!8086/8088微处理器的寻址空间有1M为什么
“8086/8088微处理器内部的地址总线只有16位”这句话你理解错了,不是内部地址总线有16位,而是寄存器是16位的,例如AX,BX,SI,DI都是16位的,它们能表示的地址码所以只有16位的。2的16次方等于64K,这是我们作为程序编写者能通过寄存器直接访问的内存空间。而8086/8088CPU提供的地址总线有20位,2的20次方等于1M,这是CPU它自己能访问的最大内存空间。
这就有个矛盾了:CPU能访问1M内存,而寄存器却只能表示64K内存大小。所以就引入段地址和偏移地址的概念。把这1M 的内存空间分成64K大小的一段段,指定哪一段,然后再在这个段的开始加上“偏移地址”,这不就可以访问1M内存的任意空间了?
段地址怎么得到的问题:
比如在汇编数据段某处声明了某个字符变量 STR
MOV DX,SEG STR
通过SEG 语句则可把STR所在段地址取出来,送给DX.
一上内容希望对你有帮助!
‘贰’ 16位微型机的地址总线为20位,其可寻址空间为2^20=1MB
地址总线的宽度是20位,即能传送到内存的物理地址是20位
cup是16位,通过:物理地址=段地址*16+偏移地址
分别传送16位的段地址和16位的偏移地址到地址加法器,段地址(16进制)*16相当于左移一位,再加上偏移地址定位到内存的物理地址。经过运算之后的物理地址即是20位。
‘叁’ 8086的地址总线有20根,寻址范围为( 1M )字节。
8086CPU地址总线有20根,能寻址1MB的存储单元。
8086CPU通过16条数据总线、20条地址总线和若干条控制总线与外部进行数据交换。由于地址总线有20条,所以CPU可以访问的存储单元数为2的20次方,即1M个存储单元。每个存储单元存放8位二进制数,即一个字节,且这些存储单元都是顺序排列的,每个单元用唯一的一个物理地址标示,这个物理地址既是由地址总线得到的20位二进制数。
关于寻址范围这里强调一下,N位地址线能访问2的N方个存储单元。比如:1位地址线只能访问2个存储单元,两位地址线能访问4个存储单元,等等。
至于每个存储单元的大小要看CPU的字长了,即CPU的数据总线。8086的字长为16位,它的数据总线为16位,本应该存储单元是16位的,但为了与8位机兼容,将这16位分成了高8位和低8位,在寻址时用19位地址线确定16位的存储单元,用另一根地址线决定是高8位还是低8位。
‘肆’ 8086CPU 有20位地址总线,可以传送20位地址,达到1MB寻址能力,请问这句话怎么理解
2的20次方是1M。大叔。这个都不会啊.囧。
2^20=1048576=(1048576/1024=1024K)=1M
电脑是二进制的。地址总线只是表示地址。地址内部表示为xxxxxxxxxxxxxxxxxx。可以表述1M个地址。
至于每个地址是8bit(一个字节B),还是16bit(双字节),还是32bit(四字节,目前常用),那根据处理器的,8086好像是8位数据,容量最大1MB。
‘伍’ 为什么20位二进制数可以存储1MB个存储单元地址
其实,20位二进制寻址1M存储空间,实际可以看做20根地址线接入存储器,那么每根线出现的数不是0就是1也就是二进制。
比如A0号线到A19依次出现的是:00000000000000000001 ,那么这20根地址线经翻译到存储器就是要找1#的存储器地址存储的内容,在1#存储器存的就是一个8位的字节。
补充:M是一种表示方法,就像K,T等,没有非要用M、K、T来表示文件,他们都是没有单位的,所以要表示比如 存储器要加单位,如存储器真正要说就是1MB而不能说1M。
‘陆’ 假若CPU向外输出20位地址,则它能直接访问的存储空间是多大如何计算
假若CPU向外输出20位地址,则它能直接访问的存储空间可达1MB。
PC机在使用过程中突然断电,RAM中存储的信息将全部丢失(不论是SRAM还是DRAM)。外存储器中的信息首先被调入内存中,才能被CPU处理。假若CPU向外输出20位地址,则它能直接访问空间可达220=1MB。
公式是:“可直接寻址的物理地址空间=2^地址线的根数”后面的单位是Byte。2^20(2的20次方)=1,048,576Byte,1M=1024Bt=1024*1024Byte=1048576Byte由此可知寻址空间为1M了。
(6)为什么20位物理地址内存是1M扩展阅读:
1、立即寻址(立时寻址、立即操作数)
指令中直接给出了操作数,操作数紧跟在操作码的后面,在取出指令的同时,也就取出了操作数。立即有操作数可供操作之用,所以称为立即操作数,或立即寻址。
立即寻址的指令执行起来很快,CPU将数据与指令一起从存储器取出,不必通过寻址计算就获得了操作数。立即寻址也便于程序员使用。但是,因为数据和地址都是固定的,所以这种寻址方式灵活性最差。
立即寻址方式可用来提供常数,设置初始值等。
2、直接寻址
指令中的地址码是操作数的有效地址,用这个有效地址访问一次存储器便获得操作数,这种寻址方式称为直接寻址。
因为不需要任何寻址计算,所以称指令带有操作数的有效地址的寻址方式为直接寻址。通常说寻址的范围就是用这个地址直接访问存储空间的大小,它也受到地址字段长度的限制。
对于使用次数很少又不需要做什么变化的地址码,可采用直接寻址方式。
3、间接寻址
间接寻址方式意味着指令中的地址字段使操作数地址的地址,即操作数的地址是间接提供的,通常在指令格式中划出一位作为直接寻址或间接寻址的标志位,间接寻址用标志符@指出。
CPU先从存储器中取出含有间接地址的指令,然后访问间接地址单元,从中取出有效地址。CPU需要多执行一次访问存储器操作,所以间接寻址比直接寻址执行速度要慢。
参考资料:网络-寻址概念
‘柒’ 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+偏移地址
‘捌’ 20位地址总线可以访问1M个存储单元但为什么又可说成1MB呢1B不是指8位二进制数吗
20根地址线可以寻址1048576个地址空间,也就是1兆个不同地址
如果每个地址存储大小为1byte,那么这20根地址线就是寻址1M字节(1MB)的数据了
‘玖’ 问一个微机原理的问题8086
段地址: 0000 0000 0000 0000 (16bit)
偏移地址:+ 0000 0000 0000 0000 (16bit)
--------------------------------------------------------
0000 0000 0000 0000 0000 (20bit)
2的20次方就是1024KB,也就是1MB
段地址是放在段寄存器里面的,而段寄存器显然是16位的。但是为什么说他是20位段地址呢?
就是因为BIU(Bus Interface Unit)在取段寄存器的内容时,将整个值左移了4位,
所以就形成了20位,再加到偏移地址上,就形成了20位的寻址能力。
当然了,这是实模式下的。如果是保护模式,段寄存器放的是描述符。
这些内容你就看intel那本汇编的书吧,将的很详细
‘拾’ 为什么20位地址总线对应2^20B=1MB直接寻址空间为什么这样算1位不是代表1位二进制数吗
20位地址线,就有2^20=1048576=1M种状态,因此可以寻址1M存储空间。一般说来,在计算机中,内存是按照字节来访问的,字节的英文是Byte,1M字节的内存空间就写为1MB。因此20位地址线可以访问1MB内存空间,说的是,用20位地址线访问1M字节内存空间,每一次访问一个字节的内存单元。