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(Executio
2、n Unit)(一一)总线接口单元总线接口单元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个空字节时,自动取指令说明n传统的CPU执行指令的过程是:取指令执行指令再取指令,串
3、行执行串行执行。n 8086是把“取指令”和“执行指令”分别由BIU和EU两个部件来完成。当EU正在执行指令时,BIU可以从内存中取出指令字节,放在指令队列中。这样,使得“取指令”和“执行指令”的操作在时间上是并行并行的。n BIU和EU协调配合,使EU可以连续不停一条接一条地执行事先已进入指令队列中的指令。显然,这种工作方式可以加快程序的执行,提高了CPU的效率。体现了“流水线计算机”(PipeLine Computer)的初步特点。2.地址加法器和段寄存器地址加法器和段寄存器 地址加法器:用来产生20位的物理地址。n一个存储单元具有两种地址属性:物理地址和逻辑地址。n物理地址:CPU访问存
4、储器时,在地址总线上实际送出的地址。它的范围(如8086系统)是00000HFFFFFH,即有2201MB的地址空间。n但8086的内部寄存器是16位。显然,不能用16位的寄存器来实现对1MB单元的寻址。为此,引入了存储器“分段”的概念,即把1MB内存空间分成若干段。每段最大可达64KB可由16位寄存器进行寻址。n段的起始地址成为“段基址”,要访问的单元距段基址的距离(字节数)为“偏移量”(Offset)。段的起始地址偏移量要访问的单元段n程序设计时,使用的是逻辑地址。逻辑地址由“段基址”和“偏移量”构成(均为16位)。n“段基址”由段寄存器CS、DS、SS和ES提供;“偏移量”由BX、BP、
5、IP、SP、SI、DI或根据寻址方式计算出的有效地址EA(Effective Address)提供。注意:每个存储单元有唯一的物理地址,但它却可由不同的“段基址”和“偏移量”组成。例如:1200H:0345H12345H1100H:1345H12345H 除非专门指定,一般情况下,段在存储器中的分配是由操作系统负责的。由逻辑地址获得物理地址的计算公式:物理地址段基值X16+偏移量段基值150偏移量150000030物理地址190逻辑地址物理地址例.设(CS)=4232H,(IP)=66H则物理地址计算如下4 2 3 2 0 H6 6 H)4 2 3 8 6 H.42320H66H42386H5
6、231FH 段地址段终址64K64K(2)163.16位指令指针寄存器位指令指针寄存器IP 正常运行时,IP中含有BIU要取的下一条指令(字节)的偏移地址。IP在程序运行中能自动加1,指向要执行的下一条指令。(二二)执行单元执行单元EU(Execution Unit)见图2.1 功能:负责指令的译码和执行,负责向总线接口单元BIU提供偏移地址,对通用寄存器和标志寄存器进行管理。组成:ALU(算术逻辑单元)通用寄存器组:AX,BX,CX,DX,BP,SP,SI,DI 标志寄存器FR 执行单元控制电路二、寄存器结构二、寄存器结构 共有14个16位的寄存器。(一)通用寄存器(一)通用寄存器 1.数据
7、寄存器数据寄存器 AX、BX、CX、DX:16位 每个数据寄存器也可分为两个8位寄存器使用,如:AX可分为AH(高8位)、AL(低8位)。数据寄存器的隐含使用见表21。2.指针寄存器和变址寄存器指针寄存器和变址寄存器 指针寄存器:BP:基址指针寄存器 SP:堆栈指针寄存器 变址寄存器:SI:源变址寄存器 DI:目的变址寄存器 一般用来存放地址的偏移量。(二)段寄存器(二)段寄存器 CS代码段寄存器 DS数据段寄存器 ES 扩展段寄存器 SS 堆栈段寄存器(三)标志寄存器(三)标志寄存器 16位,只用了其中的9位 根据功能,8086的标志分为两类:状态标志和控制标志标志寄存器的格式及各位的含义标
8、志寄存器的格式及各位的含义1514131211109876543210OFDFIFTFSFZFAFPFCF状态标志方向标志中断标志跟踪标志Trace Flag控制标志进位标志奇偶标志半进位标志零标志符号标志溢出标志1.状态标志(状态标志(6位)位):表示前面的操作执行后,算术逻辑部件处于怎样一种状态。例如,是否产生了进位,是否发生了溢出等等。程序中,可以通过对某个状态标志的测试,决定后面的走向及操作。进位标志CF(Carry Flag)它反映:n加法时,最高位(字节操作时的D7位,字操作时的D15位)是否有进位产生。n减法时,最高位(字节操作时的D7位,字操作时的D15位)是否有借位产生。奇偶
9、标志PF(Parity Flag):若运算结果低8位中“1”的个数为偶数,则PF1;否则PF0。辅助进位标志AF(Auxiliary carrry Flag):也称“半进位标志”,它反映:n加法时,第3位向第4位有进位;n减法时,第3位向第4位有借位。零标志ZF(Zero Flag):若运算结果为0,则ZF1;否则ZF0。符号标志(Sign Flag):它和运算结果的最高位相同。溢出标志OF(Overflow Flag):若运算过程中发生了“溢出”,则OF12.控制标志控制标志(3位位):每一位控制标志都对一种特定的功能起控制作用。可以通过专门的指令对其进行“置位”(Set)或“复位”(Res
10、et)。中断允许标志IF(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类:(一)地址地
11、址/数据总线数据总线AD15AD0 地址/数据复用引脚。传送地址时为三态输出,传送数据时可双向三态输入/输出。在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用来指示当前正在使用哪个段寄存器。(三)控制总线(三)控制总线
12、1.BHE/S7:高高8位数据总线允许位数据总线允许/状态复用引脚,三态、输出状态复用引脚,三态、输出 在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,直
13、至READY=1,进入T4。4.TEST:等待测试信号,输入等待测试信号,输入 用于多处理器系统中且只有在执行WAIT指令时才使用,当CPU执行WAIT指令时,每隔5个时钟周期对该线的输入进行一次测试:若TEST1时,CPU将停止取下条指令而进入等待状态,重复执行WAIT指令,直至TEST=0,CPU才继续往下执行被暂停的指令。等待期间允许外部中断。5.INTR:可屏蔽中断请求信号,输入、高电平有效可屏蔽中断请求信号,输入、高电平有效 当INTR1时,表示外设提出了中断请求,8086/8088在每个指令周期的最后一个T状态去采样此信号。若IF=1,则CPU响应中断,转去执行中断服务程序。6.N
14、MI:非屏蔽中断请求信号,输入、上升沿有效非屏蔽中断请求信号,输入、上升沿有效 此请求不受IF的影响。只要此信号一出现,就在现行指令结束后引起中断。7.RESET:复位信号,输入、高电平有效复位信号,输入、高电平有效至少维持4个时钟周期的高电平。见表23。8.CLK:系统时钟,输入系统时钟,输入(四)电源线(四)电源线VCC和地线和地线GND(五)(五)其他控制线其他控制线这些控制线的功能将根据方式控制线MN/MX所处的状态而定。四、工作模式四、工作模式 MN/MX :最小/最大模式控制信号,输入 =1:最小模式 =0:最大模式(一)(一)最小模式最小模式 系统中只有一个CPU,所有的总线控制
15、信号由8086产生。1.INTA:中断响应信号,输出中断响应信号,输出用于对外设的中断请求作出响应。连续周期中的两个负脉冲,第1个脉冲是通知外设接口,它的中断请求已获允许;外设接口收到第2个负脉冲后,往数据总线上放中断类型码。2.ALE:地址锁存允许信号,输出地址锁存允许信号,输出提供给地址锁存器8282的控制信号。在任何一个总线周期的T1状态,ALE输出有效电平,以表示当前总线上输出的是地址信息。3.DEN:数据允许信号,输出数据允许信号,输出提供给数据总线收发器8286,表示CPU准备发送或接收一个数据。4.DT/R:数据收发信号,输出数据收发信号,输出用来控制数据总线收发器8286的数据
16、传送方向。=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:总线保持响应信号,输出总线保持响应信号,输出当系统中CPU之外的另一个主模块要求占用总线时,通过此引脚向CPU发一个高电平的请求信号。这时,如果CPU允许让出总线,就在当前总线周
17、期完成时,于T4状态从HLDA引脚发出一个回答信号,对刚才的HOLD请求作出响应。同时,CPU使地址数据总线和控制状态线处于浮空状态。总线请求部件收到HLDA信号后,就获得了总线控制权,在此后一段时间,HOLD和HLDA都保持高电平。在总线占有部件用完总线之后,会把HOLD信号变为低电平,表示放弃对总线的占有。80868088收到低电平的HOLD信号后,也将HLDA变为低电平,这样,CPU又获得了对地址数据总线和控制状态线的占有权。(二)最大模式二)最大模式 系统中有一个主处理器(8086/8088),其他的为协处理器(数值运算协处理器8087和输入/输出协处理器8089)。8086在最大模式
18、下的典型配置比最小模式增加了总线控制器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:总线请求信号输入总线请求信号输入/总线请求允许信号输出,双向。总线请求允许信号输出,双向
19、。供协处理器发出使用总线的请求信号和接收CPU对总线请求的回答信号。后者比前者的优先级高。五、五、8086/8088的存储空间的存储空间 1.存储器组织存储器组织存储器按字节组织,每个字节只有唯一的地址。若存放的信息是8位的,将按顺序存放;若存放的信息是1个字时,则将该字的低字节放在低地址中,高字节放在高地址中;若存放的信息是双字时(一般作为指针),低位字是被寻址地址的偏移量,高位字是被寻址地址所在的段基址。见图2-11。对存放的字,其低位字节可以在奇数地址中开始存放,也可以在偶数地址中开始存放,前者称为非规则存放,这样存放的字称为非规则字;后者称为规则存放,这样存放的字称为规则字。见图2-1
20、1。对规则字的存取可以在一个总线周期完成,非规则字的存取则需两个总线周期。在8086/8088程序中,指令仅要求指出对某个字节或字进行访问,而对存储器访问的方式不必说明,由处理器自动识别。见图2-12。8086的1MB存储空间实际上分为两个512KB的存储体(又称存储库),分别叫高位库和低位库。低位库与数据总线D7D0相连,该库中每个地址均为偶数地址;高位库与数据总线D15D8相连,该库中每个地址均为奇数地址。见图213和表26。2.存储器分段存储器分段 在8086/8088系统中,1MB存储空间被分为若干逻辑段,其实际存储器中段的位置如图2-14所示。每段最多可包含64KB长的连续存储单元。
21、每个段的起始地址又叫基址,它的最后4位为0,是一个能被16整除的数。段和段之间可以是连续的、分开的、部分重叠或完全重叠的。一个程序所用的具体存储空间可以为一个逻辑段,也可以为多个逻辑段。段的基址存放于段寄存器CS、DS、ES、SS中,所以程序可以从4个段寄存器给出的逻辑段中存取代码和数据。若要对别的段而不是当前可寻址的段中存取信息,程序必须首先改变对应的段寄存器的内容,将其设置成所要存取的段的基址。3.实际地址和逻辑地址实际地址和逻辑地址 实际地址(也称物理地址):CPU和存储器进行数据交换时实际寻址所使用的地址,20位二进制数或5位十六进制数所表示的地址。逻辑地址:由两部分组成:段基址和偏移
22、量。前者是由段寄存器给出的段起始地址;后者是指存储单元所在的位置离段起始地址(即基址)的偏移距离,又称偏移地址。均用无符号的16位二进制数或4位十六进制数表示。程序中不使用实际地址,而使用逻辑地址。当CPU访问主存时,BIU将逻辑地址转换为20位物理地址。注意:注意:一个实际地址可对应多个逻辑地址一个实际地址可对应多个逻辑地址。逻辑地址源见表2-7。8086总线周期的概念:为了取得指令或传送数据,就需要CPU的总线接口单元执行一个总线周期。一个最基本的总线周期由4个时钟周期组成,时钟周期是CPU的基本时间计量单位,它由计算机主频决定。比如,8086的主频为5MHz,1个时钟周期就是 200ns
23、;8086l的主频为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总线操作谢谢大家结束结束
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。