1第2讲微型计算机系统的微处理器苏放frossesu@sohu.com北京邮电大学信息与通信工程学院8086/8088微处理器238086微处理器的结构•8086CPU是Intel系列的16位微处理器,它采用HMOS工艺制造,双列直插,有40个引脚。•8086CPU的电源为单一5V,主时钟频率为5MHz~10MHz。它的外部数据总线为16位,地址线为20根。因为可用20位地址,所以可寻址的地址空间达1MB。48086微处理器的结构•8086CPU在内部采用了并行流水线结构,可以提高CPU的利用率和处理速度。•8086CPU被设计为支持多处理器系统,因此能方便地与数值协处理器8087或其他协处理器相连,构成多处理器系统,从而提高系统的数据处理能力。•8086CPU还具有一个功能相对完善的指令系统,能对多种类型的数据进行处理,使程序设计方便、灵活。58086的功能结构•从功能上讲,8086分为两部分,即总线接口部件BIU(BusInterfaceUnit)和执行部件EU(ExecutionUnit)。6总线接口部件BIU•BIU是CPU与外部存储器及I/O的接口,负责与存储器和I/0系统进行数据交换。•BIU由下列各部分组成:–4个16位段地址寄存器•代码段寄存器CS•数据段寄存器DS•附加段寄存器ES•堆栈段寄存器SS7–16位指令指针IP:IP用于存放下一条要执行指令的有效地址EA(即偏移地址)。–20位物理地址加法器:加法器用于将逻辑地址变换成读/写存储器所需的20位物理地址,即完成地址加法操作。–6字节的指令队列:当执行单元EU正在执行指令中,且不需要占用总线时,BIU会自动进行预取下一条或几条指令的操作,并按先后次序存入指令队列中排队,由EU按顺序取来执行。–总线控制逻辑:总线控制逻辑用于产生并发出总线控制信号,以实现对存储器和IO端口的读/写控制。8执行部件EU•执行部件EU的功能就是负责指令的执行。•EU包括下列几个部分:–算术逻辑单元ALU:ALU完成16位或8位的二进制数的算术逻辑运算,绝大部分指令的执行都由ALU完成。–标志寄存器FR:它用来反映CPU最近一次运算结果的状态特征或存放控制标志。–通用寄存器组:它包括4个数据寄存器AX、BX、CX、DX,4个专用寄存器:基址指示器BP、堆栈指示器SP、源变址寄存器SI和目的变址寄存器DI。–EU控制器:它接收从BIU中指令队列取来的指令,经过指令译码形成各种定时控制信号,向EU内各功能部件发送相应的控制命令,以完成每条指令所规定的操作。9BIU和EU的动作管理•在8086中,EU和BIU两部分是按流水线方式并行工作的取指执行取指执行取指执行取指执行取指执行(a)早期微处理器指令的执行过程(b)8086微处理器指令的执行过程108086的寄存器结构•8086CPU内部有14个16位寄存器,可以分为三组:数据寄存器ALAHBHBLCHCLDHDLSPBPDISIIPCSDSSSESAXBXCXDX堆栈指针基数指针源变址目的变址指令指针状态标志代码段数据段堆栈段附加段指针寄存器指针寄存器控制寄存器段寄存器通用寄存器FLAG11通用寄存器组•通用寄存器可以分为两组:数据寄存器和地址指针与变址寄存器。–数据寄存器•数据寄存器包括AX、BX、CX、DX等4个16位寄存器–它们既可以作为16位寄存器使用,也可以将每个寄存器高字节和低字节分开作为两个独立的8位寄存器使用。12地址指针和变址寄存器•地址指针和变址寄存器组包括SP、BP、SI和DI等4个16位寄存器。它们主要是用来存放或指示操作数的偏移地址。–堆栈指针SP中存放的是当前堆栈段中栈顶的偏移地址。–BP是访问堆栈时的基址寄存器。SP、BP通常和SS联用。–SI和DI称为变址寄存器。它们通常与DS联用,为程序访问当前数据段提供操作数的段内偏移地址。SI和DI中的内容分别是当前数据段和当前附加段中某一存储单元的偏移地址。–当SI、DI和BP不作指示器和变址寄存器使用时,也可将它们当作一般数据寄存器使用,存放操作数或运算结果。138086CPU中通用寄存器的特殊用途和隐含性质AX,AL在输入输出指令中作数据寄存器不能隐含乘法指令中存放被乘数和乘积,除法指令中存放被除数和商隐含AH在LAHF指令中,作目标寄存器用隐含在十进制运算指令中作累加器用隐含AL在XLAT指令中作累加器用隐含BX在间接寻址中作基址寄存器用不能隐含在XLAT中作基址寄存器用隐含CX在串操作指令和LOOP指令中作计数器用隐含CL在移位/循环移位指令中作移位次数计数器用不能隐含DX在字乘法/除法指令中存放乘积高位或被除数高位或余数隐含在间接寻址的输入输出指令中作地址寄存器用不能隐含SI在字符串运算指令中作源变址寄存器用隐含在间接寻址中作变址寄存器用不能隐含DI在字符串运算指令中作目的寄存器用隐含在间接寻址中作变址寄存器用不能隐含BP在间接寻址中作基址指针用不能隐含SP在堆栈操作中作堆栈指针用隐含14段寄存器组•8086CPU可直接寻址lMB的内存空间。直接寻址时需要20位地址码,而所有的内部寄存器都是16位的,用它们作地址寄存器,只能直接寻址64KB单元。•在8086CPU中采用了存储空间分段技术来解决这一矛盾。将lMB的存储空间分成若干个逻辑段,每段最大长度为64KB。15物理地址形成•段寄存器中的16位数自动左移4位,然后与16位偏移量相加,形成20位物理地址。地址加法器段基址左移4位偏移地址20位物理地址段寄存器有效地址EA19015019016段寄存器的选择•在形成物理地址时,究竟是取哪一个段寄存器的内容做段基址,这取决于CPU做何操作:–对于取指操作,是将当前CS中的内容左移4位(相当乘16)再加上IP的内容,形成20位指令地址;–对于存取数据操作,是将当前数据段寄存器DS中的段基址左移4位,再与16位偏移地址EA相加,形成20位的物理地址;–对于压栈和弹栈操作,是将当前堆栈段寄存器SS中的段基址左移4位,再与SP相加,形成20位的物理地址;–在对目的串操作时,是以当前附加段寄存器ES中的段基址左移4位,再与DI相加以形成20位的物理地址。17段超越•除了基本段约定之外,8086还允许部分改变基本段约定,如存取数据的基本段为数据段,但可以临时改变为代码段、或附加段、或堆栈段,这种情况称为段超越。CPU执行的操作基本段约定允许修改的段偏移地址取指令CS无IP压栈、弹栈SS无SP源串DSCS,ES,SSSI目的串ES无DI通用数据读写DSCS,ES,SS有效地址EABP作间址寄存器SSCS,DS,ES有效地址EA18控制寄存器•指令指针IP–用来存放将要执行的下一条指令在现行代码段中的偏移地址。–程序运行中,IP的内容由BIU自动修改,使IP始终指向下一条将要执行的指令地址。–正常情况下,程序是不能直接访问(修改)IP的内容的,但当需要改变程序执行顺序时,如遇到中断指令或调用指令时,IP中的内容将被自动修改。19控制寄存器•标志寄存器FR–标志寄存器FR用来存放指令执行结果特征。•①状态标志:–状态标志位有6个,由CPU在运算过程中自动置位或清零,用来表示运算结果的特征。除CF标志外,其余5个状态标志一般不能直接设置或改变。1)、CF(CarryFlag)——进位标志。当算术运算结果使最高位(对字节操作是D7位,对字操作是D15位)产生进位或借位时,则CF=1;否则CF=0。循环移位指令执行时也会影响此标志。2)、PF(ParityFlag)——奇偶标志。若本次运算结果中的低8位含有偶数个1,则PF=1;否则PF=0。3)、AF(AuxiliaryCarryFlag)——辅助进位标志。本次运算过程中若D3位有进位或借位时,AF=1;否则AF=0。该标志用于BCD运算中的十进制调整。4)、ZF(ZeroFlag)——零标志。若本次运算结果为0,则ZF=1;否则ZF=0。5)、SF(SignFlag)——符号标志。它总是与运算结果的最高有效位相同,用来表示带符号数本次运算结果是正还是负。6)、OF(OverflowFlag)——溢出标志。当带符号数的补码运算时,结果超出了机器所能表达的范围时,就会产生溢出,这时溢出标志位OF=1。OFDFIFTFSFZFAFPFCF20标志寄存器FR•②控制标志:–控制标志是用来控制CPU的工作方式或工作状态的标志。用户可以使用指令设置或清除。1)、IF(InterruptFlag)——中断允许标志。它是控制可屏蔽中断的标志,如IF=1时,允许CPU响应可屏蔽中断;当IF=0时,即使外设有中断申请,CPU也不响应,即禁止中断。2)、DF(DirectionFlag)——方向标志。该标志用来控制串操作指令中地址指针的变化方向。在串操作指令中,若DF=0,地址指针为自动增量,即由低地址向高地址进行串操作;若DF=1,地址指针自动减量,即由高地址向低地址进行串操作。3)TF(TrapFlag)——单步标志。TF=1时,CPU为单步方式,即每执行完一条指令就自动产生一个内部中断,使用户可逐条跟踪程序进行调试。若TF=0时,CPU正常执行程序。21例•将二进制数(0101010000111001)与(0100010101101010)相加,分析其对标志位的影响。解:0101010000111001+01000101011010101001100110100011•对状态标志的影响:SF=1;ZF=0;PF=1;CF=0;AF=1;OF=1。22例•将二进制数(0010001101000101)与(0011001000011001)相加,分析其对标志位的影响。解:0010001101000101+00110010000110010101010101011110•对标志位的影响如下:SF=0;ZF=0;PF=0;CF=0;AF=0;OF=0。238086的引脚信号及工作模式•为了尽可能适应各种应用场合,8086/8088CPU设置有两种工作模式:最大工作模式和最小工作模式。–最小工作模式,指系统中只有8086/8088一个微处理器,在最小模式系统中,所有的总线控制信号都直接由8086/8088CPU产生,系统的总线控制逻辑部件最少,因此,称为最小工作模式。–最大工作模式,指系统中包含有两个或两个以上的微处理。其中,一个为主处理器,就是8086/8088CPU;其它的称为协处理器,它们协助主处理器工作。248086CPU•8086CPU采用40个引脚的双列直插式封装形式。•8086/8088CPU采用了引脚复用技术:–采用了分时复用的地址/数据总线。–根据不同的工作模式定义不同的引脚功能。8086的引脚图258086的引脚及其功能1.GND,Vcc(输入)–GND为接地端,Vcc为电源端。8086CPU采用的电源为5V±10%。2.ADl5~AD0(Address/DataBus)地址/数据复用总线(双向、三态)–CPU访问一次存储器或I/O端口称完成一次总线操作,或执行一次总线周期。一个总线周期通常包括T1、T2、T3、T4四个T状态。在每个状态CPU将发出不同的信号。–ADl5~AD0作为复用引脚,在总线周期的T1状态,CPU在这些引脚上输出要访问的存储器或I/0端口的地址。–在T2~T3状态,如果是读周期,则处于浮空(高阻)状态,如果是写周期,则为传送数据。在中断响应及系统总线处于“保持响应”周期时,ADl5~AD0都被浮置为高阻抗状态。268086的引脚及其功能3.A19/S6~A16/S3(Address/Status)地址/状态复用线(输出、三态)–在总线周期的T1状态,用来输出地址的最高4位,在总线周期的其他状态(T2,T3和T4状态),用来输出状态信息。–S6总是为0,表示8086CPU当前与总线相连。–S5表明中断允许标志的当前设置。–S4和S3状态的组合指出当前正使用哪个段寄存器。–当系统总线处于“保持响应”周期时,A19/S6~Al6/S3被置为高阻状态。S4S3含义00当前正在使用ES01当前正在使用