理论教育 微机存储器组织与I/O结构

微机存储器组织与I/O结构

时间:2023-11-04 理论教育 版权反馈
【摘要】:把1 MB的存储器以64 KB为单位分为若干段。图2.5 8086存储器结构2.8086 I/O组织结构8086系统可以允许连接多种I/O接口与设备,而且CPU设置了专门的I/O指令。若用直接寻址方式寻址I/O端口,端口地址用8位,可寻址256个端口;端口地址若用16位,端口地址可达64K个,CPU需用寄存器DX间接寻址I/O端口。CPU通过输入、输出指令与I/O端口交换信息。

微机存储器组织与I/O结构

1.存储器组织与分段

8086有20条地址线,它的直接寻址能力为1 MB,系统中可有1 MB的存储器。这1 MB逻辑上可组成一个线性矩阵,地址从00000H到FFFFFH。在存储器中,每个存储单元都有一个地址,每个单元都可以存储一字节。任何两个相邻字节都可以存放一个16位的字,在一个字中的每个字节都有一个字节地址,这两个字节地址中数值较小的那个作为该字的地址。如果存放一个字符串(字节序列),那么字符串的第一个字节存放在地址较低的单元中,以后依次存放。

8086 CPU不论是读还是写存储器,每次总是16位。CPU执行访问字节的指令时,只用了8位,另外8位则被忽略了。这16位总是存储器内两个连续字节单元的内容,其中第一个字节的地址是偶地址时,可以通过一次访问存储器来实现其功能。然而,对于奇地址的字的读写指令,CPU必须读写两个连续偶地址字,访问存储器两次,每次都忽略不需要的半个字,并对剩下的两字节进行某种形式的字节调整。上述读写奇地址的字的操作都是由CPU自动完成的。但是可以看出读写偶地址开始的字要比读写奇地址开始的字速度快。

由于8086 CPU的ALU是16位的,而所有存放地址的寄存器(如SI、DI、BX、SP、IP)也是16位的,因而对地址的运算也是16位的,这样就产生了一个矛盾,即16位的地址寄存器如何去寻址20位的存储器物理地址。解决这个问题是靠存储器分段实现的。把1 MB的存储器以64 KB为单位分为若干段。在寻址一个具体物理地址时,必须要有一个段地址(在段寄存器中)左移4位再加上由地址寄存器给出的16位偏移量来形成实际的20位物理地址。这个过程是在BIU的地址加法器中实现的。

8086组成的系统中,存储器有1 MB,由信号与A0将1 MB的存储器分成奇地址和偶地址两个存储体,如图2.5所示。从图2.5中可以看出,奇地址和偶地址存储体各占512 KB,其选通信号分别为和地址信号A0,偶地址存储体数据线只与低8位数据线相连,奇地址存储体数据线只与高8位数据线相连。(www.daowen.com)

图2.5 8086存储器结构

2.8086 I/O组织结构

8086系统可以允许连接多种I/O接口与设备,而且CPU设置了专门的I/O指令。8086系统中的I/O端口地址可以多达64K个,CPU可以访问8位端口,也可访问16位端口。若用直接寻址方式寻址I/O端口,端口地址用8位,可寻址256个端口;端口地址若用16位,端口地址可达64K个,CPU需用寄存器DX间接寻址I/O端口。各个端口的寻址方式都与存储器的字或字节的寻址方式相同,不同之处在于没有端口段寄存器,可以认为所有端口都在一个分段内。CPU通过输入、输出指令与I/O端口交换信息。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈