在8086系统中有几个可寻址空间?各有多大?用什么控制信号来区分

2024年12月04日 22:36
有3个网友回答
网友(1):

寄存器是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.

一上内容希望对你有帮助!

网友(2):

8086是冯诺依曼体系,数据、程序存储器相互独立,是用不同的指令区别对待,而不是用控制线加以区别(先不考虑扩展的情况)。理论最大寻址范围是2的地址线数目次方,和具体芯片有关。

网友(3):

8086存储器采用分体式结构:偶地址存储体和奇地址存储体,各为512k。
用A0和BHE来选择存储体。当A0=0时,访问偶地址存储体;当BHE=0时,访问奇地址存储体;当A0=0,BHE=0时,访问两个存储体。