《《微机原理及应用》第二章 808688微处理器课件.ppt》由会员分享,可在线阅读,更多相关《《微机原理及应用》第二章 808688微处理器课件.ppt(60页珍藏版)》请在三一办公上搜索。
1、第二章 8086/8088微处理器,8086:16位微处理器 数据总线宽度16位:可以处理8位或16位数据 地址总线宽度20位:可直接寻址1MB单元和64KB的 I/O端口8088:准16位处理器 内部寄存器及内部操作均为16位,外部数据总线8位8088与8086指令系统完全相同,芯片内部逻辑结构、芯片引脚有个别差异。设计8088的目的主要是为了与Intel原有的8位外围接口芯片直接兼容,第一节 8086/8088微处理器的结构,一、内部结构(编程结构):见图2.1 由两部分组成:总线接口单元BIU(Bus Interface Unit) 执行单元EU(Execution Unit)(一)总线
2、接口单元BIU 功能:负责与内存或I/O端口传送指令或数据 BIU从内存取指令送到指令队列缓冲器 当EU执行指令时,BIU要配合EU从指定的内存单元或I/O端口中读取数据,或者把EU的操作结果送到指定的内存单元或I/O端口去。 组成:4个16位的段寄存器(CS、DS、ES、SS); 1个16位的指令指针寄存器IP; 1个地址加法器; 6个字节的指令队列; 总线控制电路,1.指令队列缓冲器 先进先出 8086:6个字节,有2个空字节时,自动取指令 8088:4个字节,有1个空字节时,自动取指令说明传统的CPU执行指令的过程是:取指令执行指令再取指令,串行执行。 8086是把“取指令”和“执行指令
3、”分别由BIU和EU两个部件来完成。当EU正在执行指令时,BIU可以从内存中取出指令字节,放在指令队列中。这样,使得“取指令”和“执行指令”的操作在时间上是并行的。 BIU和EU协调配合,使EU可以连续不停一条接一条地执行事先已进入指令队列中的指令。显然,这种工作方式可以加快程序的执行,提高了CPU的效率。体现了“流水线计算机”(PipeLine Computer)的初步特点。,2.地址加法器和段寄存器 地址加法器:用来产生20位的物理地址。一个存储单元具有两种地址属性:物理地址和逻辑地址。物理地址:CPU访问存储器时,在地址总线上实际送出的地址。它的范围(如8086系统)是00000HFFF
4、FFH,即有2201MB的地址空间。但8086的内部寄存器是16位。显然,不能用16位的寄存器来实现对1MB单元的寻址。为此,引入了存储器“分段”的概念,即把1MB内存空间分成若干段。每段最大可达64KB可由16位寄存器进行寻址。,段的起始地址成为“段基址”,要访问的单元距段基址的距离(字节数)为“偏移量”(Offset)。,程序设计时,使用的是逻辑地址。逻辑地址由“段基址”和“偏移量”构成(均为16位)。“段基址”由段寄存器CS、DS、SS和ES提供;“偏移量”由BX、BP、IP、SP、SI、DI或根据寻址方式计算出的有效地址EA(Effective Address)提供。注意: 每个存储单
5、元有唯一的物理地址,但它却可由不同的“段基址”和“偏移量”组成。例如: 1200H:0345H12345H1100H:1345H12345H 除非专门指定,一般情况下,段在存储器中的分配是由操作系统负责的。,由逻辑地址获得物理地址的计算公式: 物理地址段基值X16+偏移量,例.设(CS)=4232H ,(IP)=66H,3.16位指令指针寄存器IP 正常运行时,IP中含有BIU要取的下一条指令(字节)的偏移地址。 IP在程序运行中能自动加1,指向要执行的下一条指令。,(二) 执行单元EU(Execution Unit)见图2.1 功能:负责指令的译码和执行, 负责向总线接口单元BIU提供偏移地
6、址, 对通用寄存器和标志寄存器进行管理。 组成:ALU(算术逻辑单元) 通用寄存器组: AX,BX,CX,DX,BP,SP,SI,DI 标志寄存器FR 执行单元控制电路,二、寄存器结构 共有14个16位的寄存器。 (一)通用寄存器 1.数据寄存器 AX、BX、CX、DX :16位 每个数据寄存器也可分为两个8位寄存器使用,如:AX可分为AH(高8位)、AL(低8位)。 数据寄存器的隐含使用见表21。,2.指针寄存器和变址寄存器 指针寄存器: BP:基址指针寄存器 SP:堆栈指针寄存器 变址寄存器: SI: 源变址寄存器 DI:目的变址寄存器 一般用来存放地址的偏移量。,(二)段寄存器 CS代码
7、段寄存器 DS数据段寄存器 ES 扩展段寄存器 SS 堆栈段寄存器(三)标志寄存器 16位,只用了其中的9位 根据功能,8086的标志分为两类:状态标志和控制标志,标志寄存器的格式及各位的含义,状态标志,1. 状态标志(6位):表示前面的操作执行后,算术逻辑部件处于怎样一种状态。例如,是否产生了进位,是否发生了溢出等等。程序中,可以通过对某个状态标志的测试,决定后面的走向及操作。 进位标志CF(Carry Flag) 它反映:加法时,最高位(字节操作时的D7位,字操作时的D15位)是否有进位产生。减法时,最高位(字节操作时的D7位,字操作时的D15位)是否有借位产生。 奇偶标志PF(Parit
8、y Flag):若运算结果低8位中“1”的个数为偶数,则PF1;否则PF0。 辅助进位标志AF(Auxiliary carrry Flag): 也称“半进位标志”,它反映:加法时,第3位向第4位有进位;减法时,第3位向第4位有借位。,零标志ZF(Zero Flag):若运算结果为0,则ZF1;否则ZF0。符号标志(Sign Flag):它和运算结果的最高位相同。 溢出标志OF(Overflow Flag):若运算过程中发生了“溢出”,则OF12. 控制标志(3位):每一位控制标志都对一种特定的功能起控制作用。可以通过专门的指令对其进行“置位”(Set)或“复位”(Reset)。中断允许标志IF
9、(Interrupt Enable Flag):如果IF置“1”,则CPU可以接受可屏蔽中断请求;反之,则CPU不能接受可屏蔽中断请求。 指令系统中有两条专门的指令可以置“1”或置“0” IF标志位: STI 使IF置“1”,即开放中断。 CLI 使IF清“0”,即关闭中断,方向标志DF(Direction Flag):用于串操作指令中的地址增量修改(DF0)还是减量修改(DF1)。 STD , CLD。 跟踪标志TF(Trap Flag):若TF1,则CPU按跟踪方式(单步方式)执行程序,否则将正常执行程序。,三、引脚信号和功能40条引脚按功能可分为5类: (一)地址/数据总线AD15AD0
10、 地址/数据复用引脚。传送地址时为三态输出,传送数据时可双向三态输入/输出。在8088中,只有AD7AD08条地址/数据线,AD15AD8只用来输出地址。,(二)地址/状态总线A19/S6A16/S3 地址/状态复用引脚,三态总线,分时输出。 在T1状态:输出高4位地址。访问存储器时,A19 A16送到锁存器8282锁存,与AD15 AD0组成20位地址;访问I/O端口时,不使用这4条引线。 在T2T4状态:输出状态信息。S6=0:表示CPU与总线相连;S5与IF的内容相同;S4、S3用来指示当前正在使用哪个段寄存器。,(三)控制总线 1.BHE/S7:高8位数据总线允许/状态复用引脚,三态、
11、输出 在T1状态:输出BHE,若BHE=0,则利用数据总线高8位AD15AD8和奇地址存储器单元或端口交换数据。 在T2T4状态:输出S7(无意义)。 2.RD :读信号,三态、输出 RD=0时,表示将要执行一个对存储器或I/O端口(取决于M/IO)的读操作。在读操作的总线周期的T2、T3和TW为低电平。 3.READY:“准备好”信号,输入 实际上是由所寻址的存储器或I/O端口发来的响应信号。CPU在T3采样READY,若READY=0,则在T3后插入一个或多个TW,直至READY=1,进入T4。,4.TEST:等待测试信号,输入 用于多处理器系统中且只有在执行WAIT指令时才使用,当CPU
12、执行WAIT指令时,每隔5个时钟周期对该线的输入进行一次测试:若TEST1时,CPU将停止取下条指令而进入等待状态,重复执行WAIT指令,直至TEST=0,CPU才继续往下执行被暂停的指令。等待期间允许外部中断。 5.INTR:可屏蔽中断请求信号,输入、高电平有效 当INTR1时,表示外设提出了中断请求,8086/8088在每个指令周期的最后一个T状态去采样此信号。若IF=1,则CPU响应中断,转去执行中断服务程序。 6.NMI:非屏蔽中断请求信号,输入、上升沿有效 此请求不受IF的影响。只要此信号一出现,就在现行指令结束后引起中断。,7.RESET:复位信号,输入、高电平有效至少维持4个时钟
13、周期的高电平。见表23。8.CLK:系统时钟,输入(四)电源线VCC和地线GND(五)其他控制线这些控制线的功能将根据方式控制线MN/MX所处的状态而定。,四、工作模式 MN/MX :最小/最大模式控制信号,输入 =1:最小模式 =0:最大模式(一)最小模式 系统中只有一个CPU,所有的总线控制信号由8086产生。,1.INTA:中断响应信号,输出用于对外设的中断请求作出响应。连续周期中的两个负脉冲,第1个脉冲是通知外设接口,它的中断请求已获允许;外设接口收到第2个负脉冲后,往数据总线上放中断类型码。2. ALE:地址锁存允许信号,输出提供给地址锁存器8282的控制信号。在任何一个总线周期的T
14、1状态,ALE输出有效电平,以表示当前总线上输出的是地址信息。3. DEN :数据允许信号,输出提供给数据总线收发器8286,表示CPU准备发送或接收一个数据。4. DT/R:数据收发信号,输出用来控制数据总线收发器8286的数据传送方向。=1:发送数据=0:接收数据,5. M/IO:存储器/输入输出控制信号,输出 =1:访问存储器 =0:访问I/O端口6.WR:写信号,输出 WR=0时,表示将要执行一个对存储器或I/O端口(取决于M/IO)的写操作。在写操作的总线周期的T2、T3和T4为低电平。 M/IO与RD、WR和读、写操作的对应关系。,7.HOLD:总线保持请求信号,输入 HLDA:总
15、线保持响应信号,输出当系统中CPU之外的另一个主模块要求占用总线时,通过此引脚向CPU发一个高电平的请求信号。这时,如果CPU允许让出总线,就在当前总线周期完成时,于T4状态从HLDA引脚发出一个回答信号,对刚才的HOLD请求作出响应。同时,CPU使地址数据总线和控制状态线处于浮空状态。总线请求部件收到HLDA信号后,就获得了总线控制权,在此后一段时间,HOLD和HLDA都保持高电平。在总线占有部件用完总线之后,会把HOLD信号变为低电平,表示放弃对总线的占有。80868088收到低电平的HOLD信号后,也将HLDA变为低电平,这样,CPU又获得了对地址数据总线和控制状态线的占有权。,(二)最
16、大模式 系统中有一个主处理器(8086/8088),其他的为协处理器(数值运算协处理器8087和输入/输出协处理器8089)。8086在最大模式下的典型配置比最小模式增加了总线控制器8288,解决主、协处理器之间的协调工作问题和对总线的共享控制问题。见图210。1. S2、S1、S0:总线周期状态信号,输出。 见图2-10和表2-4。 2.QS1、QS0:指令队列状态信号,输出,3.LOCK:总线封锁信号,输出当LOCK为低电平时,系统中其它总线主部件就不能占用总线。LOCK信号由指令前缀LOCK产生,而在LOCK后面的一条指令执行完后,便撤销了LOCK信号。4.RQ/GT1、RQ/GT0:总
17、线请求信号输入/总线请求允许信号输出,双向。供协处理器发出使用总线的请求信号和接收CPU对总线请求的回答信号。后者比前者的优先级高。,五、8086/8088的存储空间 1.存储器组织存储器按字节组织,每个字节只有唯一的地址。若存放的信息是8位的,将按顺序存放;若存放的信息是1个字时,则将该字的低字节放在低地址中,高字节放在高地址中;若存放的信息是双字时(一般作为指针),低位字是被寻址地址的偏移量,高位字是被寻址地址所在的段基址。见图2-11。,对存放的字,其低位字节可以在奇数地址中开始存放,也可以在偶数地址中开始存放,前者称为非规则存放,这样存放的字称为非规则字;后者称为规则存放,这样存放的字
18、称为规则字。见图2-11。 对规则字的存取可以在一个总线周期完成,非规则字的存取则需两个总线周期。在8086/8088程序中,指令仅要求指出对某个字节或字进行访问,而对存储器访问的方式不必说明,由处理器自动识别。见图2-12。 8086的1MB存储空间实际上分为两个512KB的存储体(又称存储库),分别叫高位库和低位库。低位库与数据总线D7D0相连,该库中每个地址均为偶数地址;高位库与数据总线D15D8相连,该库中每个地址均为奇数地址。 见图213和表26。,2.存储器分段 在8086/8088系统中,1MB存储空间被分为若干逻辑段,其实际存储器中段的位置如图2-14所示。每段最多可包含64K
19、B长的连续存储单元。每个段的起始地址又叫基址,它的最后4位为0,是一个能被16整除的数。 段和段之间可以是连续的、分开的、部分重叠或完全重叠的。一个程序所用的具体存储空间可以为一个逻辑段,也可以为多个逻辑段。 段的基址存放于段寄存器CS、DS、ES、SS中,所以程序可以从4个段寄存器给出的逻辑段中存取代码和数据。若要对别的段而不是当前可寻址的段中存取信息,程序必须首先改变对应的段寄存器的内容,将其设置成所要存取的段的基址。,3.实际地址和逻辑地址 实际地址(也称物理地址):CPU和存储器进行数据交换时实际寻址所使用的地址,20位二进制数或5位十六进制数所表示的地址。 逻辑地址:由两部分组成:段
20、基址和偏移量。前者是由段寄存器给出的段起始地址;后者是指存储单元所在的位置离段起始地址(即基址)的偏移距离,又称偏移地址。均用无符号的16位二进制数或4位十六进制数表示。 程序中不使用实际地址,而使用逻辑地址。当CPU访问主存时,BIU将逻辑地址转换为20位物理地址。 注意:一个实际地址可对应多个逻辑地址。 逻辑地址源见表2-7。,8086总线周期的概念: 为了取得指令或传送数据,就需要CPU的总线接口单元执行一个总线周期。 一个最基本的总线周期由4个时钟周期组成,时钟周期是CPU的基本时间计量单位,它由计算机主频决定。比如,8086的主频为5MHz,1个时钟周期就是 200ns;8086l的
21、主频为10MHz,1个时钟周期为100ns。在1个最基本的总线周期中,习惯上将4个时钟周期分别称为4个状态,即T1状态、T2状态、T3状态和T4状态。 在总线周期的T1状态用来输出要寻址的存储器或I/O端口地址;在T2状态浮置成高阻状态,为传输数据作准备;在T3状态用于传输数据;T4状态结束总线周期。,第二节 8086/8088总线操作,总线操作可以分为:a)总线读操作(CPU从存储器或I/O端口读取数据)b)总线写操作(CPU将数据写入存储器或I/O端口)1.最小模式下的总线读操作 2.最小模式下的总线写操作3.中断响应周期4.最大模式下的总线读操作5.最大模式下的总线写操作,第二节 8086/8088总线操作,谢谢大家,结束,