630 likes | 823 Views
第 2 章. 微处理器. 教学重点. 8086 微处理器的结构 8086 的存储器组织和 I/O 组织 8086CPU 的引脚和工作模式 8086 的操作和时序. §1 8086CPU 的基本结构. 一、 CPU 的基本工作方式 CPU 的结构与其工作方式密切相关,基本的工作方式有串行方式和并行方式。 CPU 执行指令一般包括 5 个步骤:①取指令 ②指令译码 ③取操作数 ④执行指令 ⑤存结果,其中① ③ ⑤步由控制器完成,② ④由运算器完成。 串行方式:上述过程按顺序一步一步执行。 特点:两部分电路交替工作,都有空闲时间,执行指令时间长,速度慢。.
E N D
第2章 微处理器
教学重点 • 8086微处理器的结构 • 8086的存储器组织和I/O组织 • 8086CPU的引脚和工作模式 • 8086的操作和时序
§1 8086CPU的基本结构 一、CPU的基本工作方式 CPU的结构与其工作方式密切相关,基本的工作方式有串行方式和并行方式。 CPU执行指令一般包括5个步骤:①取指令 ②指令译码 ③取操作数 ④执行指令 ⑤存结果,其中① ③ ⑤步由控制器完成,② ④由运算器完成。 • 串行方式:上述过程按顺序一步一步执行。 • 特点:两部分电路交替工作,都有空闲时间,执行指令时间长,速度慢。
并行方式:两部分电路即互相联系又互相独立,可以同时工作。并行方式:两部分电路即互相联系又互相独立,可以同时工作。 • 特点:可充分利用总线,提高信息传输速率,CPU效率高。 8086CPU采用并行方式工作,其结构分为两大部分,即执行部件EU,和总线接口部件BIU。 二、8086CPU的编程结构
8086CPU结构图 AH AL 地址加法器 BH BL 16位 通用寄存器 CH CL CS DH DL DS SP SS BP ES I/O控制电路 IP DI 内部寄存器 SI 外总线 运算寄存器 1 2 3 4 5 6 执行部分控制电路 8位 指令队列缓冲器 ALU 执行部件 总线接口部件 标志
1、执行部件 EU • 作用: (1)从指令队列中取出指令。 (2)对指令进行译码,发出相应的控制信号。 (3)向BIU发出请求。 (4)执行指令包括进行算术、逻辑运算,并计算操作数的偏移量。 • EU不直接与CPU外的部件联系。 • 执行部件的组成: (1)16位的算术逻辑单元ALU。 (2)四个通用寄存器AX、BX、CX、DX及专用寄存器。
2、总线接口部件 • 功能: (1)合成20位的地址,完成与外界之间的数据传送。 (2)预取指令送到指令队列。 (3) 发出外部总线控制信号。 • 总线接口部件的组成: (1)20位的地址加法器。 (2)四个段地址寄存器CS、 DS、ES 、SS。 (3)6个字节(RAM)的指令队列。
3、8086的寄存器 共有14个16位的寄存器,分5组。 (1)通用(数据)寄存器组 4个 • 一般用来暂存数据和结果,存取速度快,可进行寻址,使用灵活方便。 • 每个寄存器即可作为16位寄存器,又可分为2个8位寄存器单独使用。 • AX 累加寄存器 可分为 AH、AL • BX 基值寄存器 可分为 BH、BL • CX 计数寄存器 可分为 CH、CL • DX 数据寄存器 可分为 DH、DL
(2)4个16位专用寄存器 (指示寄存器或变址寄存器) • SP 堆栈指针寄存器 (栈顶地址偏移量) • BP 基数指针寄存器 • SI 源变址寄存器 • DI 目的变址寄存器 • 通常用来存放数据的地址,是指令代码缩短。 (3)16位的状态寄存器(6位状态,3位控制标 志)
16位寄存器,其中有7位未用。 1-低8位有偶数个1 0-低8位有奇数个1 D15 D0 OF DF IF TF SF ZF AF PF CF 方向标志 单步中断 符号标志 零标志 半进借位标志 奇偶标志 进借位标志 溢出标志 中断允许 1-结果为0 0-结果不为0 1-有进、借位 0-无进、借位 1-低4位向高4位有进、借位 0-低4位向高4位无进、借位
OF: 溢出标志 有符号数运算时,结果超出机器表示的范围。OF=1有溢出 OF=0无溢出。 判断溢出的方法:最高位和次高位进位关系不一致为溢出。 • 例:⑴ 0010001101000101 + 0011001000011001 0101010101011110 标志位:CF=0 ZF=0 SF=0 AF=0 PF=0 OF=0
例:⑵ 0101010000111001 + 0100010101101010 1001100110100011 标志位:CF=0 ZF=0 SF=1 AF=1 PF=1 OF=1 3位控制标志: DF 方向标志:控制字符串的处理方向 IF 中断标志:决定CPU是否相应中断 TF 跟踪标志:为1可单步执行程序,用于程序的调试和检查。 为0自动连续执行程序
(4)4个16位的段寄存器 存放地址的段基址 CS 代码段寄存器 DS 数据段寄存器 ES 附加段寄存器 SS 堆栈段寄存器 (5)指令指示器 IP IP中存放将要取出的指令地址的偏移量,可以自动加1。
§2 8086的存储器组织和I/O组织 一、存储器分段技术 8086CPU有20位地址,而内部寄存器为16位,因此采用地址分段技术,将地址分为段基址和偏移地址。 1、地址分段的优点: • 大多数指令只涉及16位的偏移地址,减少指令长度,提高了指令执行速度。 • 对程序模块化设计有利,设计程序时可以不考虑物理地址。 • 可充分利用内存空间。
2、分段的方法 • 将低4位为0的高16位地址作为段基址,每段最长可为64K。 • 段与段之间可以连续,可以间断,也可以重叠。 • 各段相互独立,不可互换使用。 CS当前代码段基址,与IP形成指令地址。 SS当前堆栈段基址,用SP、BP进行栈操作。 DS当前数据段基址,用BX、DI、SI间接寻找数据地址。 ES当前附加数据段基址,主要用于串操作。
CS 0000 代码段 IP DS或ES 0000 数据段 SI、DI或BX SS 0000 堆栈段 SP或BP 存储器 段寄存器和偏移地址寄存器组合关系
4位 16位 段寄存器值 16位 偏移量 20位 存储器物理地址的计算方法 物理地址 二、物理地址(实际地址)的形成: 每个存储单元都可以用两个形式的地址来表示: 实际地址(或称物理地址)和逻辑地址。 逻辑地址在程序中使用,即段基址:偏移地址 。 物理地址=段基址*16(左移4位) +偏移地址。
例1:CS=C081H IP=1230H 将要取出的指令地址=C0810H+1230H=C1A40H • 例2:DS=122BH SI=0150H 数据的物理地址=122B0H+0150H=12400H • 例3:SS=1BF8H SP=003AH 栈顶地址=1BF80H+003AH=1BFBAH • 物理地址只有一个,而形成物理地址的段基址和偏移量可以不同。
40H 23H 三、字节和字的传送 • 一般设想存储单元的地址由低到高依次排列。 • 每个存储单元存放一个字节,连续两个单元 存放一个字。 • 字的存放按照低8位低地址,高8位高地址。 如:2340H 低地址 高地址 • 双字往往表示新的地址,在内存中占用连续4个单元。 形式为 段基址:偏移量
8A 偏移量 15 00 段基址 23 如: 2300H:158AH 低地址 高地址
M XX XX 8086 CPU D0 偶地址 D7 忽略 奇地址 D15 M XX XX 8086 CPU D0 忽略 偶地址 D8 奇地址 D15 • 8086中字或字节的传送 ⑴ 读(写)偶地址字节 使用低8位数据线D0-D7 高8位被忽略。 ⑵读(写)奇地址字节 使用高8位数据线D8-D15 低8位被忽略。
M XX XX 8086 CPU D0 偶地址 D7 奇地址 D15 ⑶ 读(写)偶地址字 使用16位数据线D0-D15一次完成。
M 8086 CPU D0 忽略 D8 XX 奇地址 D15 D0 XX 偶地址 D7 忽略 D15 ⑶ 读(写)奇地址(不规则存放)字 分两次完成,使用两个总线周期。要尽量避免不规则存放。
四、I/O端口 • 每个I/O端口相当于一个内存单元,有一个独立的地址,其内容为一个字节。 • 相邻两个单元可以组成一个字。 • 存放数据的规则和读写规则与内存相同。 • 用专用指令读写。 IN 输入 OUT 输出。
§3 8086CPU的引脚和工作模式 一、总线周期的概念 • 指令周期:执行一条指令所需要的时间。 • 总线周期(机器周期):CPU通过总线与存储器或I/O接口进行一次数据传输所需的时间。 • 8086中一个基本的总线周期由4个时钟周期组成。 • 时钟周期(T状态):CPU处理动作的最小单位。 T=1/F主频 如F=5MHZ 则T=0.2us=200ns
T3 TW T4 T2 T1 4个T状态T1、T2、T3、T4分别做不同的工作,组成一个总线周期。 • T1状态: CPU向多路复用总线发地址信号。 • T2状态:复用总线低16位为高阻状态,准备传输 数据,高4位输出本总线周期的状态信号。 • T3状态:高4位继续出现信息,低16位传输数据。 • 如信息未准备好,此时插入TW等待周期。 • T4状态:总线周期结束。
二、最小模式和最大模式 1、最小模式:系统只有一个8086CPU,所有的控制信号都直接由8086CPU产生,总线控制逻辑电路最少。 2、最大模式:系统包括两个或多个CPU(一个为主CPU,其他为协CPU),此时8086CPU需要外加总线控制器,以便产生较多的控制信号进行互相联系和协调工作。 3、常用的协处理器: 8087 数值运算协处理器 利用硬件实现多种类型的数值运算,有专用指令,速度快。 8089 输入输出协处理器 专门用于输入输出的操作,可直接为输入输出服务。
二、8086CPU的引脚和功能 共40条引脚双列直插。 有些引脚在最小模式和最大模式下定义相同。 另一些引脚在不同模式下定义不同。 如下图:
8086/8088 4039383736353433323130292827262524232221 VCC(5V) GND 0102030405060708091011121314151617181920 AD15/A15 AD14/A14 A16/S3 AD13/A13 A17/S4 AD12/A12 A18/S5 AD11/A11 AD10/A10 A19/S6 /BHE/S7 HIGH(SSO) AD9/A9 MN//MX AD8/A8 /RD AD7 HOLD(/RQ//GT0) AD6 AD5 HLDA(/RQ//GT1) /WR(/LOCK) AD4 M//IO(/S2) AD3 DT//R(/S1) AD2 /DEN(/S0) AD1 ALE(QS0) AD0 /INTA(QS1) NMI /TEST INTR READY CLK RESET GND
1、最小、最大模式下定义相同的引脚 ①AD0-AD15:地址/数据复用引脚,双向,三态。 分时工作 T1状态下出现低16位地址,T2-T4状态下作数据线使用。 注意:A0为低8位数据片选信号。因为低8位数据线与偶地址相连,偶地址即A0=0。 ②A19/S6-A16/S3:地址/状态总线复用引脚,输出,三态。 T1状态 如访问内存作地址高4位,访问外设保持低电平。 T2-T4状态输出状态信息。
S6=0,表示8086/8088当前与总线相连。 • S5:反映中断允许标志IF当前的设置。 S5=0(IF=0)禁止中断。 S5=1(IF=1)允许中断。 • S4、S3:指出当前使用段寄存器的情况。 S4 S3 段寄存器 0 0 当前正在使用ES 0 1 当前正在使用SS 1 0 当前正在使用CS 1 1 当前正在使用DS
③ BHE/S7:高8位数据总线允许/状态复用引脚。在T1状态,输出BHE信号,表示使用高8位数据线,奇地址单元选通。 T2-T4状态,输出S7, S7目前未用。 BHE和A0组合表示不同的操作。 BHE A0 操作 占用数据线 0 0 从偶地址读/写一个字 D0-D15 1 0 从偶地址读/写一个字节 D0-D7 0 1 从奇地址读/写一个字节 D8-D15 0 1 从奇地址读/写一个字 D8-D15 1 0 分两次完成 D0-D7
④RD:读信号,三态 输出,低电平有效。RD=0表示当前CPU正在对存储器或I/O端口进行读操作。 ⑤READY:准备就绪信号,输入,高电平有效。READY=1,表示CPU访问的存储器或IO端口已准备好传送数据。若CPU在总线周期T3状态检测到READY=0,表示未准备好,CPU自动插入一个或多个等待状态TW,直到READY=1为止。 ⑥INTR:可屏蔽中断请求信号,输入,高电平有效。当INTR=1,表示外设向CPU发出中断请求,CPU在当前指令周期的最后一个T状态去采样该信号,若此时,IF=1,CPU响应中断,执行中断服务程序。
⑦NMI:不可屏蔽中断请求信号,输入,上升沿触发。该请求信号不受IF状态的影响,也不能用软件屏蔽,一旦该信号有效,则执行完当前指令后立即响应中断。⑦NMI:不可屏蔽中断请求信号,输入,上升沿触发。该请求信号不受IF状态的影响,也不能用软件屏蔽,一旦该信号有效,则执行完当前指令后立即响应中断。 ⑧TEST:测试信号,输入,低电平有效。 当CPU执行WAIT指令时,各个时钟周期对TEST进行一次测试,若TEST=1,CPU继续等待,直到TEST=0。 ⑨RESET:复位信号,输入,高电平有效。 RESET信号至少要保持4个时钟周期。此信号使CPU结束当前操作,重新开始执行再启动过程。
⑩MN//MX:工作模式选择信号,输入。MN//MX=1,表示CPU工作在最小模式系统;MN//MX=0,表示CPU工作在最大模式系统。⑩MN//MX:工作模式选择信号,输入。MN//MX=1,表示CPU工作在最小模式系统;MN//MX=0,表示CPU工作在最大模式系统。 CLK:主时钟信号,输入。8086/8088的时钟频率为5MHZ。 电源线(VCC)和地线(GND) 8086/8088采用单+5V, 1、20引脚为地线。
2、最小模式时的专用引脚 ① M/IO:存储器或IO端口访问信号,三态输出。M/IO=1,表示CPU正在访问存储器;M/IO=0,表示CPU正在访问I/O端口。 /②WR:写信号,三态输出,低电平有效。WR=0,表示当前CPU正在对存储器或I/O端口进行写操作。 ③INTA:中断响应信号,输出,低电平有效。表示CPU响应了外设发来的中断申请。 8086的中断响应是通过两个连续中断响应周其进行的。在第二个响应周期的T2-T4,外部中断系统将中断类型码送往数据总线,以求的中断响应服务程序的入口地址。
④ALE:地址锁存允许信号,输出,高电平有效。④ALE:地址锁存允许信号,输出,高电平有效。 用来锁存地址信号A 0 -A15,ALE为正脉冲,在T1状态出现,其作为地址锁存器的选通信号。 ⑤DT/R:数据发送/接收控制信号,三态输出。 为增加数据总线的驱动能力,需加总线收发器(8286/8287 )。此信号控制收发器的数据传送方向,DT/R=1,发送数据(写操作);DT/R=0 接收数据。 ⑥DEN:数据允许信号,三态输出,低电平有效。作为数据总线上收发器8286的选通信号。
⑦HOLD:总线请求信号,输入,高电平有效。 当其他总线控制设备(如DMA)要求使用总线时,则向CPU发一高电平的请求信号即HOLD =1。 ⑧HLDA:总线请求响应信号,输出,高电平有效。当HLDA有效时,表示CPU对其它控制器的总线请求作出响应,允许出让总线,此时,所有与三总线相接的CPU的线脚呈现高阻抗状态,从而让出总线。 当总线请求部件占有总线时, HOLD 、HLDA为高,使用完后,变为低电平,CPU恢复。 • 思考:最小模式下的典型配置
系统总线信号 +5V MN/MX* M/IO* RD* WR* M/IO* RD* WR* A19/S6 ~ A16/S3 8282 A19 ~ A16 OE* STB 8088 A15 ~ A8 8282 A15 ~ A8 OE* STB A7 ~ A0 AD7 ~ AD0 8282 OE* STB ALE 8286 D7 ~ D0 DT/R* DEN* T OE*
3、最大模式时的专用引脚 在最大模式下一般需加一个转换和扩展控制电路常用8288(总线控制器),其输出控制完成CPU要进行的各种操作。 ①S2、S1、S0:总线周期状态信号,三态输出。 S2 S1 S0 操作过程 产生信号 0 0 0 发中断响应信号 INTA 0 0 1 读I/O端口 IORC 0 1 0 写I/O端口 IOWC 0 1 1 暂停 1 0 0 取指令 MRDC 1 0 1 读存储器 MRDC 1 1 0 写存储器 MWTC 1 1 1 无源
② QS1、QS2:指令队列状态信号,输出。 QS1 QS2含义 0 0 无操作 0 1 将指令首字节送入指令队列 1 0 队列为空 1 1 将指令其余字节送指令队列 ③LOCK:总线封锁信号,三态输出,低电平有效。LOCK=0,CPU不允许其它控制器占用总线。此信号由指令前缀LOCK产生。
④RQ/GT0、RQ/GT1:总线请求信号(输入)/总线请求允许信号(输出),双向,低电平有效。④RQ/GT0、RQ/GT1:总线请求信号(输入)/总线请求允许信号(输出),双向,低电平有效。 可供两个协处理器向CPU申请总线使用权,每个信号是双向的,即作请求又作回答,如两线同时请求, RQ/GT0优先。 • 思考:最大模式下的典型配置。
4、8086与8088的区别 ①8088内部(CPU内)有16位数据线,而对外只有8位数据线,因此数据地址复用线与8086不同。 8086:AD0—AD15 8088: AD0—AD7 A8—A15 ② 第28号引脚规定相反。 8086:最小模式下为 M/IO 8088:最小模式下为 M/IO(与8085兼容) ③ 第34号引脚不同 8086:BHE/S 8088:在最大模式中,为高电平; 8088没有高8数据,输出SS0信号,此与其它信号组合表明当前的动作。
M/IO DT/R SS0 操作过程 1 0 0 发中断响应信号 1 0 1 读I/O端口 IORC 1 1 0 写I/O端口 IOWC 1 1 1 暂停 0 0 0 取指令 MRDC 0 0 1 读存储器 MRDC 0 1 0 写存储器 MWTC 0 1 1 无源
§4 8086的操作和时序 • 学习时序的目的: 了解时序的配合,加深对指令的理解。 • 8086的主要操作有以下几个方面: (1)系统复位和启动操作。 (2)暂停操作。 (3)总线操作。 (4)中断操作。 (5)最小模式下的总线保持。 (6)最大模式下的总线请求/允许。
一、系统的启动和复位 1、通过RESET引脚信号执行,至少维持4个时钟周期高电平,初次加电不少于50μs。 ①复位后各寄存器值如表格:
高阻状态 高电平 ② 因为IF=0 所以不能响应可屏蔽中断。 ③ 复位后总线的状态: AD15-AD0: A19/S6-A16/S3: BHE/S7: S2、S1、S0: LOCK、RD、INTA: ALE、HLDA、QS0、QS1: 低电平 RQ/GT0: RQ/GT1:
2、系统启动 • 复位后重新启动,需经过7个时钟周期自动进入启动装态。 • 启动时CPU自动从FFFF0H开始执行程序,因而,在FFFF0H处应存放无条件转移指令,转入系统初始化程序。(引导装配程序,并给出相应的提示信息)。
二、总线操作 利用总线完成一次具体的操作为总线操作。 基本操作有:存储器读、写;I/O读、写等。 例1:最小模式下的总线读周期
T1 T2 T3 T4 CLK IO/M 高M低IO A19~A16/S6~S3 A19~A16 S6~S3 BHE/S7 AD15~AD0 A15~A0 DATA IN ALE RD DT/R DEN 8086的读周期时序