1、第4章 16位微处理器,4.1 16位微处理器概述微处理器(microprocessor)是微型计算机的运算及控制部件,也称为中央处理单元(CPU)。通常微处理器由算术逻辑部件(ALU)、控制部件、寄存器组和片内总线等组成。见下图。,第4章 16位微处理器,4.1 16位微处理器概述1971年,Intel公司设计了世界上第一个微处理器芯片Intel4004,开创了一个全新的计算机时代。微处理器经历了许多代,集成度越来越高,功能越来越强,性能越来越高。第1代:4位和低档8位微机400440408008第2代:中高档8位微机Z80、I8085、M6800,Apple-II微机第3代:16位微机80
2、86808880286,IBM PC系列机第4代:32位微机8038680486PentiumPentium II Pentium III Pentium 432位PC机、Macintosh机、PS/2机第5代:64位微机Itanium、64位RISC微处理器芯片微机服务器、工程工作站、图形工作站,第4章 16位微处理器,第4章 16位微处理器,Intel4004和采用4004的计算器,IBM PC系列机,8088CPU,IBM PC机,IBM PC/AT机,IBM PC/XT机,英特尔微处理器芯片,80386,Pentium,Pentium 4,4.1 16位微处理器概述本章介绍16位微处理
3、器8086/8088的内部结构和工作原理。8086和8088 CPU的内部基本相同,但它们的外部性能是有区别的。8086是16位数据总线,而8088是8位数据总线,在处理一个16位数据字时,8088需要两步操作,而8086只需要一步。8086和8088 CPU的内部都采用16位字进行操作及存储器寻址,两者的软件完全兼容,程序的执行也完全相同。然而,由于8088要比8086有较多的外部存储操作,所以,对于相同的程序,它将执行得较慢。这两种微处理器都采用相同的40脚双列直插式(DIP)封装。4.2 8086/8088 CPU的结构8086/8088 CPU从功能上可分为两部分,即总线接口部件BIU
4、(bus interface unit,缩写为BIU)和执行部件EU(execution unit,缩写为EU). 8086/8088 CPU的内部结构如下图所示:,第4章 16位微处理器,8088的内部结构,1 2 3 4,内部暂存器,IP,ES,SS,DS,CS,输入/输出控制电路,外部总线,执行部分控制电路,ALU,标志寄存器,AH AL,BH BL,CH CL,DH DL,SP,BP,SI,DI,通用寄存器,地址加法器,指令队列,执行部件 (EU),总线接口部件 (BIU),16位,20位,8位,8位,第4章 16位微处理器,4.2.1 执行部件执行部件EU的功能就是负责指令的执行,对
5、指令进行译码,并利用内部的寄存器和ALU对数据进行所需的处理。执行部件EU有下列部分组成:4个通用寄存器,即AX BX CX DX;4个专用寄存器,即基数指针寄存器BP、堆栈指针寄存器SP、源变址寄存器SI、目的变址寄存器DI;标志寄存器;算术逻辑单元。说明:4个通用寄存器既可以作为16位寄存器使用,也可以作为8位寄存器使用。AX寄存器也称为累加器。许多指令都是利用累加器来执行的。算术逻辑部件主要是加法器,绝大部分指令的执行都是由加法器完成的。标志寄存器共有16位,其中7位未用,格式如下表所示,各位的含义见课本75页表4-1,第4章 16位微处理器,根据功能,8086/8088的标志可以分为两
6、类:一类叫状态标志,另一类叫控制标志。状态标志表示前面的操作执行后,ALU处于何种状态,该状态会影响后面的操作;控制标志是人为设置的,指令系统中有专门的指令用于控制标志的设置和清除,每个控制标志都对某一特定的功能起控制作用。状态标志有6个,即SF、ZF、PF、CF、AF、OF。SF:符号标志,和运算结果的最高位相同,表示运算结果是正还是负。ZF:零标志,表示当前的运算结果是否为零,是则为1,否则为0。PF:奇/偶标志,如运算结果低8位中所含的1的个数为偶数,则为1,否则0CF:进位标志,当执行一个加法运算使最高位产生进位时,或者执行一个减法运算引起最高位产生借位时,CF为1,此外,循环指令也会
7、影响这一标志。AF:辅助进位标志,如果当进行加法运算时,第三位向第四位进位,或者进行减法运算时,第三位从第四位借位,则AF为1。辅助进位标志一般在BCD码运算中作为是否进行十进制调整的判断依据。OF:溢出标志,运算结果产生溢出则为1,否则为0。例题:,0010 0011 0100 0101,0011 0010 0001 1001,0101 0101 0101 1110,0101 0100 0011 1001,0100 0101 0110 1010,1001 1001 1010 0011,SF=0,ZF=0,PF=0,CF=0,AF=0,OF=0,SF=1,ZF=0,PF=1,CF=0,AF=1
8、,OF=1,+,+,第4章 16位微处理器,控制标志有3个,即DF、IF、TF。DF:方向标志,控制串操作指令。如果DF=0,则串操作过程中地址会不断增值;如果DF=1,则串操作过程中地址会不断减值;IF:中断标志,控制可屏蔽中断。如果IF=0,则CPU不能对可屏蔽中断请求作出响应;如果IF=1,则CPU可以响应可屏蔽中断请求。TF:跟踪标志,如果TF=1,则CPU按跟踪方式执行指令。这些控制标志一旦设置之后,便对后面的操作产生控制作用。4.2.2 总线接口部件BIU总线接口部件的功能是负责与存储器、I/O端口传送数据。具体讲,总线接口部件要从内存取指令送到指令队列;CPU执行指令时,总线接口
9、部件要配合执行部件从指定的内存单元或外设端口中取数据,将数据传送给执行部件,或者把执行部件的操作结果传送到指定的内存单元或外设端口中。总线接口部件由下列个部分组成:4个段地址寄存器,即CS、DS、ES、SS;16位的指令指针寄存器IP;20位的地址加法器;6字节的指令队列;,第4章 16位微处理器,说明:8086的指令队列为6个字节,8088的指令队列为4个字节。取指过程和指令执行过程重叠进行。地址加法器用来根据16位寄存器提供的信息计算出20位的物理地址。8086可用20位地址寻址1M字节的内存空间。总线接口部件和执行部件的动作管理:每当8086的指令队列中有2个空字节或8088的指令队列中
10、有1个空字节时,总线接口部件就会自动把指令取到指令队列中。每当执行部件准备执行一条指令时,它会从总线接口部件的指令队列前部取出指令的代码,然后用几个时钟周期去执行指令。在执行指令的过程中,如果必须访问存储器或者I/O设备,那么EU就会请求BIU进入总线周期去完成访问存储器或者I/O设备的操作;如果此时BIU正好处于空闲状态,就会立即响应EU的总线请求,如果此时BIU正在进行取指令操作,那么BIU首先完成取指令操作,然后再去响应EU发出的访问总线的请求。当指令队列已满,而且EU对BIU又没有总线访问请求时,BIU便进入空闲状态在执行转移指令、调用指令和返回指令时,下面要执行的指令就不是顺序排列的
11、那条指令了,这时指令队列中已经装入的字节就没有用了。此时,指令队列中的原有内容被自动清除,BIU会接着往指令队列中装入另一个程序段中的指令。,第4章 16位微处理器,4.2.3 存储器结构8086/8088系统中存储器按字节编址,可寻址的存储器空间为1MB。,第4章 16位微处理器,4.2.3 存储器结构存储器的分段:8086/8088系统把1M存储空间分成若干个逻辑段,每个逻辑段容量64KB。逻辑段可以在存储空间中浮动,段与段之间可以重叠。16字节的存储空间称为1节,要求各个逻辑段从节的整数边界开始,即段首地址低4位是0,因此就把段首地址的高16位称为“段基址”,存放在段寄存器中,段内的“偏
12、移地址” 放在IP或SP中。存储器中的逻辑地址和物理地址:逻辑地址:由段基址和偏移地址构成,16位。物理地址:实际地址、绝对地址,20位。程序用逻辑地址编址,而不是用物理地址。逻辑地址到物理地址的转换(由BIU中的地址加法器实现):物理地址=段基址16+段内偏移地址例如:CS=2000H,IP=2200H,则物理地址=22200H4个段寄存器分别指向4个现行可寻址的分段的起始字节单元。一般指令程序存放在代码段中,段地址来源于代码段寄存器,偏移地址来源于指令指针IP。当涉及到一个堆栈操作时,段地址寄存器为SS,偏移地址来源于栈指针寄存器SP。当涉及到一个操作数时,则DS或ES作为段寄存器,而偏移
13、地址为16位偏移量,该偏移量取决于指令的寻址方式。,8088的指令执行过程,习题,一、填空题1、8086/8088CPU内部结构按功能分为两部分,即 和 。2、CPU中的总线接口部件BIU,根据执行部件EU的要求,完成与 或 的数据传送。3、8086中的BIU由 个 位段寄存器、一个 位指令指针、 字节指令队列、 位地址加法器和 控制电路组成。4、8086/8088的执行部件EU由 个通用寄存器、 个专用寄存器、一个标志寄存器和 等构成。5、根据功能不同,8086的标志位可分为 标志和 标志。6、物理地址是指实际的 位主存单元地址,每个存储单元对应唯一的物理地址,其范围是。7、8086/8088的状态标志有 个,控制标志有 个。二、是非判断题1、8086/8088标志寄存器共有16位,每一位都有含义。( )2、8086/8088的逻辑段不允许段的重叠和交叉。( )3、8086/8088的数据总线都是16位。( )4、执行转移、调用和返回指令时,指令队列中的原内容不会被清除。( )5、8086与8088在软件上不一定完全兼容。( ),