第二章:16位 Intel 8086 微处理器

目录

一、基本特点

二、8086微处理器的内部结构

 一、总线接口单元BIU

二、执行单元EU

三、8086的编程结构(重点中的重点)

一、四个 通用寄存器组(数据寄存器组,存放操作数和中间结果)

二、EU中的指示器和变址寄存器(存放逻辑地址的偏移量)

三、BIU中的段寄存器(存放段的段起始地址)

四、BIU的指令指针IP

五、EU的标志寄存器

四、8086微处理器外部结构(只讨论最小模式)

一、最小模式下引脚的功能

 二、总线周期的时钟状态操作

五、存储器组织


一、基本特点

①16位的8086微处理器 兼容 8位的8085微处理器

②指令系统:采用CISC结构(指令不等长,指令能实现复杂功能)

③供电:单一+5V供电

        低电平0v,高电平5v,没有绝对稳定的电平,用0.5V供电可能由于供电不稳定的波动导致0v也可能被识别为0.5V的高电平,所以用更高的5V来区分低电平和高电平。

④总线:数据总线16位,地址总线20位, 最大寻址1MB的存储空间。

⑤内存管理方式:分段管理方式

⑥寻址单元:按字节编址

⑦寻址方式:小端编址

第二章:16位 Intel 8086 微处理器_第1张图片

 ⑧一个字16位,两个字节

二、8086微处理器的内部结构

最基本的组成部分:运算器、控制器、寄存器组和总线。

两个独立的逻辑单元组成:

①总线接口单元(BIU)——取指令和总线控制

②执行单元(EU)——执行指令

并行工作——取指令和执行指令可以并行操作。//并行指微观上的同时,取指令会预先取,不需要EU的请求

第二章:16位 Intel 8086 微处理器_第2张图片

 一、总线接口单元BIU

第二章:16位 Intel 8086 微处理器_第3张图片

BIU的组成:

①4个段寄存器(16位  CS,DS,SS,ES) Segment

②指令指针(16位   IP)

③指令队列(6字节)

④总线控制逻辑

⑤地址加法器(20位  Σ)

BIU(总线接口单元 Bus interface unit)的总功能:(取指令和总线控制)

        ①取指令:当指令队列不满,并且总线空闲时,BIU就通过总线控制逻辑从内存单元中取指令代码往指令队列中传送。

        指令预取策略: 指令队列出现 2 以上 空字节时,自动按 CS:IP 到存储器去取 指令,一次取 2 个字节。

        如果EU向BIU发送取操作数的请求,BIU会先把手头的工作做完再响应,如BIU在取指令时,会等到取完后再响应EU

        

        ②形成物理地址:BIU将16位段地址左移4位形成20位后,再与16位偏移地址通过地址加法器相加得到20位物理地址。

        其中 ①取指令 对应的物理地址是直接由BIU部分的CS:IP构成的;而对于对应数据段(DS)、堆栈段(SS)、附加段(ES)的其他数据的物理地址,是通过 EU单元生成的16位偏移地址 通过数据总线传输给BIU,然后BIU用这些相应段寄存器的段地址 与 这16位段内偏移地址 构成的。

第二章:16位 Intel 8086 微处理器_第4张图片

        ③传送数据,实现CPU与内存、I/O端口间的数据传送:EU在执行指令的过程中如果需要内存或I/O端口的数据时,BIU从外部取数据或把EU执行的结果送到外部。

        通过 ②形成数据的地址 

综上:

总体来说,BIU是联系微处理器内部与外部的重要通道。

微处理器EU部分需要的操作数,需要通过BIU来形成物理地址,去外部取得,

EU部分的运算结果,部分需要通过BIU形成物理地址,存到外部<传送数据>

EU部分执行的指令,需要BIU生成指令地址 取指令

二、执行单元EU

第二章:16位 Intel 8086 微处理器_第5张图片

EU的组成:

①ALU (16位)

②标志寄存器(16位 Flag)

③EU控制电路

④8个通用寄存器(16位,可以暂存中间结果)

EU(执行单元 Execution unit)的总功能:(执行指令,完成控制器的功能)

        ①取指令并译码:从BIU指令队列取指,并由EU控制电路进行译码

        ②执行指令:发送指令的控制信息。

        ③如果需要外部数据,EU会自动算出偏移地址,并把在EU中计算操作数的16位偏移地址送BIU,由BIU的加法器形成 20位物理地址。

        ④将取来的操作数送ALU进行指令运算。(③④也可能 是直接用寄存器的操作数)
        ⑤结果送 寄存器 或 送BIU放到内存 //送到通用寄存器可以下次直接使用
        ⑥本次操作状态 记录在 标志寄存器中

综上:

        为什么说EU完成控制器的功能? BIU相当于EU的秘书,BIU负责与外面打交道,但是真正需要指令 需要数据的是EU,EU是发送请求一方。

三、8086的编程结构(重点中的重点)

在编程结构上,8086CPU有14个16位寄存器

EU中:

8个通用寄存器(包括4个通用寄存器组和 4个指示器和变址寄存器组)

1个标志寄存器

BIU中:

4个段寄存器

1个指令指针(指令指示器)

一、四个 通用寄存器组(数据寄存器组,存放操作数和中间结果)

第二章:16位 Intel 8086 微处理器_第6张图片

累加器AX(Accumulate):AH高八位(15~8),AL低八位(7~0)

基址寄存器BX(Base)

计数器CX(Counter)

数据寄存器DX(Data)

每两组8位寄存器都能分别寻址,

有专门的功能,如计数器、累加器,基址寄存器(可以存16位地址)等。

二、EU中的指示器和变址寄存器(存放逻辑地址的偏移量)

第二章:16位 Intel 8086 微处理器_第7张图片
1 SP: 堆栈指针 Stack Pointer ,指示在堆栈段中 栈顶的位置 ,用于数据进
栈、出栈的位置指向。//存top栈顶 对应BIU段寄存器 SS
2 BP: 基址指针 Base Pointer ,指示在 堆栈段中 一个数据区的基址位置,用
于访问堆栈段中的某个数据。//存栈内数据的基址,对应BIU段寄存器SS
3 SI: 源变址寄存器 Source Index 源地址 指针,指示在数据段中一个源串
操作数的位置。//存 源操作数 在数据段的段内地址,对应BIU段寄存器DS
4 DI: 目的变址寄存器 Destination Index 目的地址 指针,指示在附加段中
一个目的串操作数的位置。//存操作后的目的结果在数据段或附加段的段内地址,对应BIU段寄存器DSorES。

三、BIU中的段寄存器(存放段的段起始地址)

CS: 代码段寄存器 Code Segment ,存放 当前程序代码 的段起始
地址//BIU自身的CS与IP配合
SS: 堆栈段寄存器 Stack Segment ,存放 当前堆栈段 的段起始
地址//堆栈段SS和SP、BP配合对堆栈进行操作
DS: 数据段寄存器 Data Segment ,存放 当前数据段 的段起始
地址//源操作数配合SI,目的操作数配合DI;存放变量
ES: 附加段寄存器 Extra Segment ,存放 当前附加段 的段起始
地址//附加段ES配合DI主要用来进行字符串的操作,附加段主要是字符串,也可以是存放数据和处理后的结果
//配合形成物理地址

四、BIU的指令指针IP

IP 指令指针,Instruction Pointer,存放下一次要取出的指令代码存放位置的偏移地址
CS:IP指示下一条要取出的指令代码的实际地址
  IP不能被程序直接存取 ,由BIU来修改,类似于程序计数器PC(Program
Counter)

第二章:16位 Intel 8086 微处理器_第8张图片

五、EU的标志寄存器

1 CF 进位 Carry Flag :结果有进位或借位, CF=1 ,否则 CF=0
2 PF 奇偶 Parity Flag :结果 8 位中 有偶数个 1 PF=1 ,否则 PF=0
3 AF 辅助进位 Auxiliary Carry Flag D3 (最低 4 位) 有进位或借位,
AF=1 ,否则 AF=0
4 ZF 零标志 Zero Flag :结果为 0 ZF=1 ,否则 ZF=0
5 SF 符号位 Sign Flag :结果为正, SF=0 ,否则 SF=1 。//只需看结果的最高位即可,与最高位相同
6 OF 溢出标位 Overflow Flag 有符号数 算术运算,结果超出其所能表示
的数值范围, OF=1 ,否则 OF=0 。//负负得正,正正得负,则OF=1
7 DF 方向标志 Direction Flag :数据串操作 地址修改方向
制,增址 DF=0 ,减址 DF=1
8 IF 中断允许 Interrupt Enable Flag IF=1 ,允许可屏蔽中
断(开中断), IF=0 ,关中断。
//IF=1时,可屏蔽中断请求,会响应中断,而IF=0 不理会可屏蔽中断。
当然不可屏蔽中断IF不管,因为不可屏蔽中断本身是必须响应的
9 TF 陷阱标志 Trap Flag TF=1 ,单步方式,每执行一条指
令自动产生一次 类型为 1 的内部中断,使操作者可以逐条指令
检查。 TF=0 ,正常。
1~6是上次ALU操作状态
7~9是人为设置的,控制CPU操作

四、8086微处理器外部结构(只讨论最小模式)

第二章:16位 Intel 8086 微处理器_第9张图片

8086微处理器 和 外部打交道的接口。

上面有横杠表示低电平有效  或者 下降沿有效。

8086采用 40引脚 双列直插式 封装。

8086 两种工作模式 最大模式、最小模式。
8 个引脚 在不同的模式下功能有所不同。

一、最小模式下引脚的功能

①模式选择:

\small MN/\overline{MX}接+5V最小模式,接地最大模式

②接通电源:

VCC、GDN(地): 8086是有源电路,采用单一+5V电源。 有两个接地引脚

③时钟信号输入:

CLK: 时钟信号输入引脚一个时钟1/3是高电平,2/3是低电平

④中断请求:

INTR中断源向微处理器发出的可屏蔽中断请求信号, 高电平有效 //配合S5使用,如果S5=0,即使INTR=1(发送了一个请求),8086也不会理会。因为它不允许响应可屏蔽中断。

NMI: 中断源向微处理器发出的不可屏蔽中断请求信号,上升沿有效 //上升沿有效可以避免多次触发

\small \overline{INTA}中断响应,向中断源发出应答,通知中断源发出中断类型码

         \small \overline{INTA}=0,表示中断源向微处理器发出的中断请求信号被应答了,将要产生中断,这时微处理器 \small \overline{INTA}有效,表示向中断源发出了一个应答信号,以便于中断源再将对应的中断类型码传给微处理器 执行相应的中断。

中断响应周期:中断响应是CPU接受中断请求后的处理过程 在响应中断时,CPU在当前指令结束后,插入两个总线周期, 发出中断应答,并通过总线获取中断类型码。

第二章:16位 Intel 8086 微处理器_第10张图片

⑤数据传输相关的引脚(输入与输出):

1、允许数据传输

       (1) \small \overline{DEN}数据允许,表示当前微处理器准备发送或接收一个数据

2、数据传输的方向:(输入还是输出)

        (2) \small DT/\overline{R}数据发送还是接收,\small DT/\overline{R}=1时从微处理器总线收发器输出

        (3)\small \overline{RD}:读选通 ,指明现在要对内存单元 或 I/O端口进行一次读操作。低电平有效  

        (4)\small \overline{WR}:写信号,指明现在要对内存单元 或 I/O端口进行一次写操作。低电平有效  

3、 和谁进行数据传输

       (5) \small M/\overline{IO}:存储器/IO控制,表明微处理器此次数据传输是和存储器还是和IO端口进行的。

4、存储器/IO是否准备好:

       (6) READY:准备就绪,有效时表示主存或I/O接口准备好,可以进行数据传输。T3采样,若READY =0则插入TW。

        //8086的总线周期至少由4个时钟周期组成,每个时钟周期称为一个T状态,分别用T1、T2、T3、T4表示

5、地址和数据的传输途径:

        是否允许传送地址:

        (7) ALE:地址锁存允许,相当于触发器的时钟,触发器状态可以改变了,也就是可以更新输出地址了,也就是A0~A19有效

       (8) AD15~AD0: 低16位地址 / 数据分时复用引脚;A是地址 address,D是数据 data

        分时输出 低16位地址(高4位A19~A16输出)及 数据信号。AD15~AD0经地址锁存器(触发器,存储输出地址的状态)输出对应的地址信号为A15~A0。

        (9)A19/S6~A16/S3: 高4位地址 / 状态 ; 分时输出 高4位地址(配合A15~A0)

        S6为0CPU与总线连通

        S5: 等价于 IF < 是否允许可屏蔽中断 > S5=1 允许响应可屏蔽中断
        S4、 S3 使用哪个段寄存器  :  00=ES 01=SS 10=CS 11=DS
6、 数据传输通道哪些是有效的:
        (10)\small \overline{BHE}/S7:高8位数据允许/状态,T1时 \small \overline{BHE}=0,D15~D8数据 有效,S7未定义。
        · 利用\small \overline{BHE}信号和A0信号,可知系统当前的操作状态:
        //8086存储器奇偶分体,地址为偶数,从偶存储体取数据,为奇数时从奇存储体取数据;
         \small \overline{BHE}表示通过数据总线高8位取数据(高八位数据线上的数据有效) 并且 对应地从奇存储体取数据
        A0=1也就是地址的最低位为1表示是一个奇数,而A0=0通过数据总线低八位取数据 并且对应的从 偶存储体取数据。
         \small \overline{BHE}=0  ——D15~D8
        A0=0——AD7~AD0
第二章:16位 Intel 8086 微处理器_第11张图片

 非对齐寻址(花费两个周期):由于8086微处理器采用小端编址,如果从奇地址开始读一个字,那么这个地址对应是数据的低8位,由以上讨论知在奇地址取数据用的是低八位数据总线,所以A0=1, \small \overline{BHE}​​​​​​​=0。  注意低八位数据总线并不代表数据的低八位,到时候从数据总线传送给EU单元的通用寄存器 如AX时,只需要此时数据总线高八位取的低八位数据放入AX的AL中就可以了。

总线请求响应:利用总线传输数据时,总线控制部件必须获 得总线的控制权。

HOLD 总线请求,用于接收其他总线部件发出的总线请求信号,便于让出总线
HLDA 总线响应,高电平表示微处理器已让出总线控制权
⑦特殊功能
(1)RESET :复位,至少持续4个时钟周期才能起到复位效果。复位一旦响应,清0标志寄存器IP、DS、SS、ES等寄存器,以及指令队列,并且CS设置为0FFFFH(多出来的0表示FFFFH是一个数)

(2)\small \overline{TEST}:测试,由WAIT指令检 查,使CPU与外部硬件同步, TEST=0继续,否则等待

 二、总线周期的时钟状态操作

8086 一个基本的总线周期由 4 个时钟周期组成。每个时钟称为 T 状态,用 T1 T2 T3 、和 T4 表示。

T1 状态: CPU 发出地址 CPU 将存储器地址或 I/O 端口的地
址送上地址总线。
T2 状态: 撤地址,发控制信号 。进行读写准备, CPU 撤销地
/ 数据、地址 / 状态复用线上的地址,地址 / 数据复用线浮置,
地址 / 状态复用线输出状态,即复用信号在这个期间切换,读
写控制信号有效。
T3 状态: 地址 / 数据线上出现数据 。写操作, CPU 提供数据;
读操作,等待存储器或 I/O 提供数据。检查 READY 信号,未
就绪,插入 TW TW 的操作与 T3 相同。
T4 状态: 完成数据读 / ,控制信号无效。结束总线操作。
第二章:16位 Intel 8086 微处理器_第12张图片
总线读周期:
T1阶段 发送地址, ALE=1 锁存器更新 地址,BHE端为0表示D15~D8高八位数据有效锁存供后来使用,A19~A0有效输出地址
T2阶段发送 控制,读写准备,A15~A0转为数据线D15~D0,DEN为0表示允许数据传输, \small \overline{RD}端为0,M/IO端为1表示需要从存储器读数据,DT/R为0表示要从外边输入数据;(由锁存BHE内容 BHE端为0,取奇寄存器 和A0=0取偶寄存器)
T3阶段 等待存储器数据,并把数据送到数据总线上:等待存储器或I/O提供数据,检查READY信号,如果准备就绪,存储器或I/O端口应该在T3期间把数据送到数据总线上并维持到T4;未就绪,插入TW。TW的操作与T3相同
T4阶段 完成读数据:控制信号均变为无效,结束总线操作。
第二章:16位 Intel 8086 微处理器_第13张图片

 锁存器会锁存BHE的状态,供之后传输数据使用,T1时刻确定,BHE数据高八位状态和 A19~A16地址 它们的信息在T1阶段确定

分时复用:

T2阶段切换复用信号,

接下来的阶段BHE端 给S7控制,
A19~A16给 S6~S3控制

第二章:16位 Intel 8086 微处理器_第14张图片

五、存储器组织

第二章:16位 Intel 8086 微处理器_第15张图片

第二章:16位 Intel 8086 微处理器_第16张图片

第二章:16位 Intel 8086 微处理器_第17张图片

你可能感兴趣的:(微机系统,硬件工程)