您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 第2章 16位和32位微处理器
第2章16位和32位微处理器16位微处理器8086/80882.132位微处理器803862.232位微处理器Pentium2.32.116位微处理器8086/8088简介2.1.08086/8088CPU的内部结构2.1.18086/8088CPU的引脚信号和功能2.1.38086/8088CPU的寄存器结构2.1.28086/8088系统的工作模式2.1.48086/8088的操作和时序2.1.58086/8088的存储器组织2.1.62.1.0简介8086:16位微处理器采用单一的+5V电源和40条引脚的双列直插式封装;时钟频率为5MHz~10MHz,最快的指令执行时间为0.4µs。8086有16根数据线和20根地址线,可以处理8位或16位数据,可寻址220即1MB的存储单元和64KB的I/O端口。8088:准16位微处理器设计的主要目的是为了与Intel原有的8位外围接口芯片直接兼容。8088的内部寄存器、运算器以及内部数据总线都是按16位设计的,但外部数据总线只有8条,因此执行相同的程序,8088要比8086有较多的外部存取操作而执行得较慢。2.1.18086/8088CPU的内部结构图2.1总线接口部件BIU1执行部件EU2BIU和EU的流水线管理3图2.18086微处理器内部结构图1.总线接口部件BIU功能负责CPU与内存或I/O端口传送指令或数据。BIU从内存取指令送到指令队列缓冲器。当EU执行指令时,BIU要配合EU从指定的内存单元或I/O端口中读取数据,或者把EU的操作结果送到指定的内存单元或I/O端口去。组成:段寄存器、指令指针寄存器、地址加法器、指令预取队列及总线控制逻辑。图2.11)段寄存器所有寄存器都是16位的,因此,能够提供的最大地址空间只能为64KB。为了寻址1MB,将存储器的空间分成若干段,每段最大为64KB。段寄存器:用来存放段的起始地址(16位)的寄存器,设有四个段寄存器:CS代码段寄存器(CodeSegmentregister)DS数据段寄存器(DataSegmentregister)SS堆栈段寄存器(StackSegmentregister)ES附加数据段寄存器(ExtraSegmentregister)图2.12)地址加法器作用:根据提供的16位信息产生20位地址。图2.13)指令预取队列8086:指令预取队列为6字节8088:指令预取队列为4字节指令预取队列采用“先进先出”原则。要执行的指令预先由BIU从内存取出放在队列中,然后EU再从队列中取出指令并执行。一般情况下,EU每执行完一条指令,就可以立即从指令队列中取指令执行,从而提高了CPU的效率。图2.14)总线控制逻辑8086分配20条引脚线传送20位地址、16位数据和4位状态信息,这就必须要分时传送。总线控制逻辑的功能,就是以逻辑控制方法实现上述信息的分时传送。2.执行部件EU功能负责指令的译码和执行。负责向总线接口部件BIU提供偏移地址。对通用寄存器和标志寄存器进行管理。组成:算术逻辑单元(ALU)、1个标志寄存器、8个通用寄存器、1个数据暂存寄存器和EU控制电路。图2.11)算术逻辑部件ALU用于进行8位和16位的算术和逻辑运算,也可以按照指令的寻址方式计算出寻址单元的16位偏移量。图2.12)标志寄存器FR16位,用来反映CPU运算的状态特征或存放控制标志。图2.13)通用寄存器组4个16位数据寄存器AX、BX、CX、DX4个16位指针与变址寄存器:堆栈指针寄存器SP(StackPointer)基址指针寄存器BP(BasePointer)源变址寄存器SI(SourceIndex)目的变址寄存器DI(DestinationIndex)图2.14)数据暂存寄存器协助ALU完成运算,暂存参加运算的数据。图2.15)EU控制电路它是控制、定时与状态逻辑电路,接收从BIU中指令队列取来的指令,经过指令译码形成各种定时控制信号,对EU的各个部件实现特定的定时操作。EU中所有的寄存器和数据通道(除指令队列总线为8位外)都是16位的宽度,可实现数据的快速传送。3.BIU和EU的流水线管理(1)每当8086的指令队列中有2个空字节或8088的指令队列有1个空字节,BIU就会自动把后面的指令从存储器取到指令队列中,从而提高了CPU执行指令的速度。(2)每当EU准备执行一条指令时,它会从指令队列前部取出指令,进行译码,然后去执行。在执行指令时,如果必须访问存储器或I/O端口,EU就会请求BIU去完成访问外部的操作,如果此时BIU正好处于空闲状态,那么会立即响应EU的请求。若EU向BIU发出请求访问时,BIU正在将某条指令取到指令队列中,此时BIU首先完成取指令操作,然后再去响应EU发出的访问外界的请求。3.BIU和EU的流水线管理(续)(3)当指令队列已满,且EU对BIU又没有总线访问请求时,BIU进入空闲状态。(4)在执行转移指令、调用指令和返回指令时,如果要执行的指令不在指令队列中,则指令队列中原有内容被自动清除,BIU会重新取指令,把将要转入的程序段的指令装入到指令队列中。2.1.28086/8088CPU的寄存器结构图2.2通用寄存器1标志寄存器3指令指针寄存器2段寄存器4图2.28086/8088的寄存器结构1.通用寄存器分为:数据寄存器★地址寄存器★1)数据寄存器EU中有4个16位的数据寄存器AX、BX、CX、DX每个数据寄存器又可分为高字节H和低字节L寄存器,即AH、BH、CH、DH和AL、BL、CL、DL两组。16位数据寄存器主要用于存放数据,也可存放地址,而8位寄存器只能用于存放数据,它们均可以用寄存器名来独立寻址、独立使用。2)地址指针寄存器和变址寄存器都是16位,一般用来存放偏移地址。指针寄存器SP和BP用来存取位于当前堆栈段中的数据,但SP和BP使用上有区别。堆栈指针寄存器SP给出栈顶的偏移地址。基址指针寄存器BP用来存放位于堆栈段中的一个数据区基址的偏移地址。源变址寄存器SI和目的变址寄存器DI用来存放当前数据段的偏移地址。表2.1表2.1寄存器的隐含使用2.指令指针寄存器16位,存放着BIU要取的下一条指令的偏移地址。指令执行时,每取一次指令IP就自动加1,这样保证能按顺序取出并执行指令。指令代码存放在存储器的代码段,CPU利用CS和IP取得要执行的指令.修改IP中的内容,就可以改变指令的执行流向。3.标志寄存器(16位)16位标志寄存器FR用于反映指令执行结果或控制指令执行的形式。只用了其中的9位,分为:状态标志位和控制标志位。1)状态标志位(6位)用来反映算术或逻辑运算后结果的状态,以记录CPU的状态特征。进位标志CF★奇偶标志PF★符号标志SF★溢出标志OF★辅助进位标志AF★零标志ZF★进位标志CF(CarryFlag)加法时,最高位(字节操作时的D7位,字操作时的D15位)是否有进位产生。减法时,最高位(字节操作时的D7位,字操作时的D15位)是否有借位产生。奇偶标志PF(ParityFlag)若运算结果低8位中“1”的个数为偶数,则PF=1;否则PF=0。一般用来检测数据传输中是否发生错误。辅助进位标志AF(AuxiliarycarrryFlag)加法时,第3位向第4位有进位。减法时,第3位向第4位有借位。该标志位通常用于对BCD算术运算结果进行调整。零标志ZF(ZeroFlag)若运算结果为0,则ZF=1;否则ZF=0。符号标志SF(SignFlag)它和运算结果的最高位相同。溢出标志OF(OverflowFlag)若运算过程中发生了“溢出”,则OF=1,否则OF=0。2)控制标志位(3位)用来控制CPU的操作,由程序设置或清除。中断允许标志IF★方向标志DF★跟踪(陷阱)标志TF★中断允许标志IF(InterruptEnableFlag)如果IF置“1”,则CPU可以接受可屏蔽中断请求;反之,则CPU不能接受可屏蔽中断请求。STI指令使IF置“1”,即开放中断。CLI指令使IF清“0”,即关闭中断。方向标志DF(DirectionFlag)控制字符串操作指令的步进方向。DF=1时,地址自动递减;DF=0时,地址自动递增。STD使DF=1。CLD使DF=0。跟踪(陷阱)标志TF(TrapFlag)为调试程序的方便而设置的。TF=1,则处于单步工作方式;TF=0,将正常执行程序。例如,在系统调试软件DEBUG中的T命令,就是用该标志位来进行程序的单步跟踪的。4.段寄存器图2.1存储器分段的概念★逻辑地址和物理地址★堆栈★段寄存器的使用★1)存储器分段的概念8086/8088有20位地址线,能够寻址1MB的内存空间;CPU内部存放地址信息的IP、SP、SI、DI或BX等寄存器却只有16位,只能寻址64KB存储空间。所谓分段技术就是把1MB的存储空间分成若干逻辑段,每个逻辑段最大具有64KB的存储空间。段内地址是连续的,段与段之间是相互独立的。逻辑段可以在整个存储空间浮动,即段的排列可以连续、分开、部分重叠或完全重叠,非常灵活。图2.4图2.4逻辑分段的示意图2)逻辑地址和物理地址段首址:段的第一个单元的地址(20位),最低4位是全0(即段首址是16的整数倍)。段基址:段首址的高16位。段基址存放在段寄存器中。偏移地址:段内存储单元距离段首地址的偏移量(以字节数计算,16位),也称有效地址EA。偏移地址存放在IP、BP、SI、DI或BX中,或者是通过计算得到。逻辑地址:通常用段基址:偏移地址的形式来描述,在程序中使用。物理地址的形成物理地址:指CPU和存储器进行数据交换时实际寻址所使用的地址,是用20位二进制数或5位十六进制数表示的地址。任何一个单元的20位物理地址都是由它的逻辑地址变换得到的:物理地址=段基址×16+偏移地址例题设(CS)=4232H,(IP)=0066H,试计算物理地址。注意一个存储单元的物理地址是唯一的,而逻辑地址是可以不唯一的。例如,物理地址是12345H,它的逻辑地址可以是1233H:0015H也可以是1234H:0005H。3)堆栈堆栈是以“先进后出”或“后进先出”原则管理的存储区域。堆栈段也采用段定义语句在存储器中定义,最大为64KB。可在1MB的存储空间内浮动。堆栈段所在存储区中的位置由堆栈段寄存器SS和堆栈指针SP来指示。SS给出堆栈段的段基址SP存放栈顶地址,指出从栈顶到段首址的偏移量。栈顶与栈底之间单元中的内容是堆栈段中的有效数据。堆栈操作有入栈(PUSH)和出栈(POP)两种。4)段寄存器的使用四个段寄存器分别指明四个现行可寻址的逻辑段:(1)代码段(CodeSegment):用来存放当前正在运行的程序。系统在取指令时将寻址代码段,其段基址和偏移地址分别由段寄存器CS和指令指针IP给出。(2)数据段(DataSegment):存放当前运行程序所用的数据。用户在寻址该段内的数据时,可以缺省段的说明,其偏移地址可通过多种寻址方式形成。(3)堆栈段(StackSegment):堆栈为保护、调度数据提供了重要的手段。系统在执行栈操作指令时将寻址堆栈段,段基址和偏移地址分别由段寄存器SS和堆栈指针SP提供。(4)附加数据段(ExtraSegment):该段是一个辅助的数据区,也用于数据的保存。用户在访问段内的数据时,其偏移地址同样可以通过多种寻址方式来形成,但在偏移地址前要加上段的说明(即段跨越前缀ES)。图2.7表2.2图2.7段寄存器的使用情况只要修改段寄存器的内容,就可以将相应的存放区设置在内存存储空间的任何位置上。这些区域可以相互独立,也可以部分或完全重叠。表2.2段寄存器使用时的一些基本约定2.1.38086/8088CPU的引脚信号和功能图2.88086最小模式下引脚的功能定义18086最大模式下引脚的功能定义28088的引脚特性3图2.88086/8088CPU的引脚信号1.8086最小模式
本文标题:第2章 16位和32位微处理器
链接地址:https://www.777doc.com/doc-3402086 .html