8086/8088均为40条引线,双列直插式封装,某些引线有多重功能,其功能转换有两种情况:一种是分时复用,一种是按组态定义。
用8088微处理器构成系统时,有两种不同的组态:
最小组态:8088微处理器构成一个较小的系统,所连接的存储容量不大,I/O端口也不多,此时系统的控制总线由8088直接提供。
最大组态:用8088构成一个较大系统时,系统的控制信号不能由CPU直接提供,而必须由总线控制器(8288)控制
举个例子,你家开商店的,做的规模不大,你爸爸直接就管的过来,但是你做大了,你爸爸自己就管不过来了,就要雇一个管家 (总线控制器)听从于你爸。
8088引脚(太重要了都是知识点)
33号引脚 MN/MX非 接电源MIN最小组态,接地MAX最大组态
31到24号引脚 ,我们只考最小组态,也就是看小括号里面的内容就可以
HOLD 保持请求信号 接收DMA请求(输入)
HLDA 保持响应信号 (HoLD Answer)总线保持响应(输出)
DMA(直接存储器存取 direct memory access)
早期的时候只有查询工作方式,CPU会一直询问外设是否准备好,CPU快外设慢,严重的速度不匹配问题,效率低。
后来又有了中断方式,变成了外设询问CPU,CPU就可以干自己的事情,等外设来提出中断请求。
还有一种方式就是上面提到的DMA控制器,通常用在内存和外存之间数据交换。因为内存和外存交互都是批量的数据,不管是你内存询问外存,还是外存询问内存,都是一次只能传输1字节的数据,这时候就出现了DMAC,它相当于一个二手承包商。它就会向CPU发出请求(HOLD),如果CPU同意就会通过HDLC引脚发出信号, CPU暂时把总线的控制权交给DMAC。这时候CPU对于总线的控制就变成高阻态了(也叫悬浮态)。
29号引脚 WR非 write写信号,由CPU发出
28号引脚 IO/M非 访问外设还是内存 , 注意8086这个引脚和8088相反 M/IO非。也就是这个引脚决定在地址总线的值是内存地址 还是外设的端口号
27和26号引脚,一个是数据方向引脚,一个是数据缓冲允许管脚
DEN非 数据缓冲允许,看最上面的图,也就是数据允不允许到数据缓冲器 。DEN非决定数据缓冲器工作不工作
DT/R非 :数据方向 数据发送/接收 Transmit/receive 比如RD非为0,说明CPU在读,数据的方向就应该朝向CPU,也就是数据经过数据缓冲器读入CPU,那么DT/R非引脚的值就是 0,receive接收。
又比如写出数据,那么DT/R非引脚的值就是1, 不管方向是读还是写,都要在DEN数据缓冲允许的情况下才能工作。也就是DEN非为0。
25号引脚ALE 地址锁存允许。因为地址线数据线分时复用,地址要先锁存,CPU通过ALE发出地址锁存信号。 决定地址锁存器工作不工作
下面是与组态无关的引线
32号引脚 RD非 read读信号,往CPU里面读
17,18号引脚,都是输入管脚
NMI (non- maskable interrupt)不可屏蔽中断请求 不受中断允许标志位IF的控制。边沿触发。优先级比较高
INTR (maskable interrupt)可屏蔽中断请求 ,受中断允许标志位IF的控制,也就是IF=1,中断才开着
22号管脚 和21号管脚
ready: 准备 要知道一个概念,总线周期,一个总线周期就是CPU完成一个动作。比如读内存这个动作
而一个总线周期包含4个T状态 T1 T2 T3 T4 ,如果工作简单4个节拍就可以完成。 但是有的工作比较复杂,发现这4个状态不够用,这个时候,就会在T3和T4之间插入一个等待周期Tw
,插入不插入Tw,由ready信号决定。会在T3周期结束之后采样这个ready信号。当ready为0,说明它不ready没有准备好 。也就是在T3等待周期该完成的工作没有完成。这时候就要在T3和T4之间插入一个等待周期Tw。 在Tw周期执行完毕后会再一次采样Ready信号,如果ready还是为0,说明它还是没ready,继续插入Tw。直到采用ready为1的时候,说明它准备好了,就不插入了Tw了。直接进入T4周期,然后结束。
reset 复位信号 咱们不是有14个寄存器吗,如果复位信号reset=1,那就说明要复位了,就会把其中的13个寄存器都置为零。不包括CS代码段。而CS被置位(FFFFH)
而CS和IP联用,决定指令从那里开始执行 CS:IP
指令起始地址(物理地址)就是 CS*16+IP FFFF0H+0H=FFFF0H 开始执行程序
考试的时候一般会问你复位后CS是多少,或者第一条指令从哪里开始执行?
对于8088来说
AD0-AD7 地址数据分时复用
对于8086来说
AD0-AD15地址数据分时复用
A16-A19 地址线和控制线复用
当他们为控制信号时
A16/S3和A17/S4决定当前使用的是哪个段寄存器
A18/S5是决定IF 例如A18/S5=0 那么IF=0关中断
A19/S6还没有使用
在T1时刻通常出现的是地址信息,在T3时刻出现的是数据信息
34号管脚
对于8088来说它是SSO
对于8086来说它是BHE非 决定 奇地址的512K是否被选中
8086,20M地址空间分奇偶地址体
假设给出指令
MOV AL,[0] 你就当里面的是物理地址,只需要访问偶地址体就可以完成取数据送给8位寄存器AL 。 这时候 BHE非就是1,D0就是 0。一个总线周期就能完成
MOV AL,[1] 从奇地址体里面取数据,送AL。这时候 BHE非就是0,D0就是1。 一个总线 周期就能完成
MOV AX,[0] 这时候要取一个字,会从本地址取一个字节在向上扩展一个字节形成一个字送AX。奇地址体偶地址体都要选中, BHE非为0,D0为0 ,但是因为他们在一行0号地址和1号地址。所以一个总线周期就可以完成
MOV AX,[1] 这时候取一个字 ,但是是从奇地址体开始取的,还要在访问偶地址题,不在同一行, 这时候就需要两个总线周期 第一个周期 BHE非=0 D0=1 第二个周期 BHE非=1 D0=0
所以我们把
从奇地址开始的16位字称为非规则字
从偶地址开始的叫规则字