8086总线接口(BIU)部件文字详解

总线接口部件BIU

功能:

形成访问存储器的物理地址(实际地址). 还有逻辑地址这一说,它的形式是,段地址:偏移地址(偏移地址也叫有效地址)

访问存储器取得指令并暂存到指令队列中等待执行,访问存储器或I/O端口以读取操作数参与EU运算.

组成:

①4个段地址寄存器(CS,DS,ES,SS) 存放段地址

②16位的指令指针寄存器IP: IP总是指向下一条指令的偏移地址(指向现在程序运行到何处)

③20位的地址加法器: 完成逻辑地址向物理地址的转换

④6字节的指令队列缓冲器

⑤总线控制逻辑

段地址寄存器(CS,DS,SS,ES)

存储器的分段

8086可寻址的存储空间位1MB,有20位的地址线(2的20次方种组合),而内部的寄存器是16位,只能寻址64KB

有20位地址线,却只有16位字长,但是4位不能浪费.

物理地址, 逻辑地址(逻辑地址的形式就是段地址:偏移地址). 物理地址是20位 段地址和偏移地址都是16位

也就是物理地址和20位地址线是统一的

逻辑地址是可以转换成物理地址的,我们为了用上20根地址线,将8086进行了分段

让段地址处于20位地址线的高16位,偏移地址处于20位地址线的低16位,让它们两个相加就得到了物理地址

8086存储空间中,把16字节的存储空间称作一节,要求各个逻辑段从节的正数边界开始,即段首地址低4位是'0',段首地址高16位称为"段基址",存放在段寄存器DS或CS或SS或ES中

段是可以重叠的(部分,完全重叠都可以),又作数据段,又作堆栈段

每个段都是64KB,如果有重叠的段,那么就少于64KB.

段可分为代码段,数据段,附加段,堆栈段(存什么就是什么). 代码段寄存器CS,数据段寄存器DS,附加段寄存器ES,堆栈段寄存器SS.

代码段:存放程序代码,程序代码超过64K时,需要分成几个段存放.CS中存放的是现在正在执行的程序段的段基址.

数据段:用于存放当前使用的数据.需要第二个数据段时可以使用附加段.

堆栈段:是内存中的一块存储区,用来存放专用数据.如调用子程序时的入口参数,返回地址等,这些数据都按照"后进先出"的规则进行存放. 因为堆栈段只有一个出入口.

SS存放堆栈段的段基址,SP存放当前堆栈栈顶的偏移地址.SP的值在执行堆栈操作指令时根据规则自动地进行修改.

段基址要提前存放在对应的段寄存器里:CS,DS,SS,ES(ES,SS不常用,CS是自动装入的,实际只涉及DS).

段寄存器:偏移/指针是固定搭配的,(要记住固定搭配)

段基址表示一个段的起始地址的高16位.

偏移地址是段内偏移:怎么偏移也出不了段.偏移地址也称为段内地址

段首地址=段地址x16,如果本身就是十六进制,直接在后面+0即可.

地址加法器

功能:完成逻辑地址向物理地址的变换(自动玩完成).

物理地址:访问存储器的实际地址,用20位二进制表示.

方法:物理地址=段基址x16(即二进制左移4位)+偏移地址

一个存储单元的物理地址是唯一的,而它对应的逻辑地址是不唯一的.

指令指针寄存器IP-(16位)

功能:用来存放将要执行的下一条指令在代码段中的偏移地址.在程序运行过程中,BIU自动修改IP中的内容,使它始终指向将要执行的下一条指令.

注意:程序不能直接访问IP,但是可通过某些指令修改IP的内容.

指令队列缓冲器-(6字节)

BIU从存储器中读出指令送入6字节的指令队列.(8086是6字节,8088的是4字节)

总线控制逻辑:将CPU的内部总线与CPU引脚所连接的外部总线相连,是CPU与外部交换信息的必经之路.

总线接口部件和执行部件的管理:

协同工作

猜你喜欢

转载自blog.csdn.net/m0_59069134/article/details/126798065
biu
今日推荐