1、1第第2 2章章 微处理器系统结构微处理器系统结构 2本章主要介绍:本章主要介绍:微处理器(微处理器(CPUCPU)的内部结构及功能的内部结构及功能;Intel 8086Intel 8086微处理器工作模式、引脚信号;微处理器工作模式、引脚信号;堆栈堆栈。重点是重点是8086 CPU8086 CPU的内部结构、引脚信号以及堆栈的内部结构、引脚信号以及堆栈。3v微处理器(微处理器(CPU)由下列主要部分组成:由下列主要部分组成:算术逻辑单元算术逻辑单元 ALU 控制器控制器 寄存器阵列寄存器阵列 总线和总线缓冲器总线和总线缓冲器 高性能的高性能的CPU还有:指令预取部件,指令译码部件、还有:指令
2、预取部件,指令译码部件、地址形成部件、存储器管理部件等。地址形成部件、存储器管理部件等。第第2章章 微处理器系统结构微处理器系统结构 4一、算术逻辑运算单元(一、算术逻辑运算单元(ALU)ALU是对二进制数进行算术逻辑运算的基本部件。是对二进制数进行算术逻辑运算的基本部件。数据加工处理可归纳为两种基本运算:数据加工处理可归纳为两种基本运算:算术运算,逻辑运算。算术运算,逻辑运算。第第2章章 微处理器系统结构微处理器系统结构 5一、算术逻辑运算单元(一、算术逻辑运算单元(ALU)()(续)续)算术运算:可进行无符号数和带符号数的算术运算:可进行无符号数和带符号数的加、减、乘、除运算,符号数采用补
3、码表示,加、减、乘、除运算,符号数采用补码表示,减法通过求负数的补码而变成加法运算。还可减法通过求负数的补码而变成加法运算。还可进行进行BCDBCD码运算。码运算。乘、除可以通过多次重复加、减和移位实现。乘、除可以通过多次重复加、减和移位实现。第第2章章 微处理器系统结构微处理器系统结构 6一、算术逻辑运算单元(一、算术逻辑运算单元(ALU)()(续)续)例如:例如:13 11=143=8FH 1 1 0 1 采用部分积左移和加法采用部分积左移和加法 1 0 1 1 可完成二进制乘法。可完成二进制乘法。1 1 0 1 1 1 0 1 部分积左移部分积左移 0 0 0 0 +.1.1.0.1 1
4、 0 0 0 1 1 1 1第第2章章 微处理器系统结构微处理器系统结构 7一、算术逻辑运算单元(一、算术逻辑运算单元(ALU)()(续)续)逻辑运算:可完成逻辑逻辑运算:可完成逻辑“与与”、“或或”、“非非”、“异或异或”、“移位移位”等基本的逻辑运算。等基本的逻辑运算。浮点运算:浮点数可以看作是由两个定点数组成,浮点运算:浮点数可以看作是由两个定点数组成,尾数与阶码。在对阶后可以对尾数进行运算。尾数与阶码。在对阶后可以对尾数进行运算。浮点数运算可以用软件实现。也可以专门生产浮点运算浮点数运算可以用软件实现。也可以专门生产浮点运算部件和浮点微处理器,并设有专门的浮点运算指令,可进部件和浮点微
5、处理器,并设有专门的浮点运算指令,可进行行32位或位或64位浮点加、减、乘、除运算。位浮点加、减、乘、除运算。Pentium处理器已把浮点处理器与主处理器集成到一个处理器已把浮点处理器与主处理器集成到一个芯片上。芯片上。早期的浮点处理器有:早期的浮点处理器有:8087、80287、80387协处理器。协处理器。第第2章章 微处理器系统结构微处理器系统结构 8一、算术逻辑运算单元(一、算术逻辑运算单元(ALU)()(续)续)ALU框图:框图:DAA部件部件Flag R第第2章章 微处理器系统结构微处理器系统结构 9二、控制器二、控制器 CTRL是发布操作命令的部件,操作的顺序需要是发布操作命令的
6、部件,操作的顺序需要精确的定时,其内部主要组成如下:精确的定时,其内部主要组成如下:1、指令部件、指令部件 包括程序计数器(包括程序计数器(PC),指令寄存器(指令寄存器(IR),),指指 令译码器(令译码器(ID)。)。2、时序部件时序部件 包括时钟系统,脉冲分配器。包括时钟系统,脉冲分配器。3、微操作控制部件、微操作控制部件 可采用组合逻辑控制,微程序控制和可编程逻辑阵可采用组合逻辑控制,微程序控制和可编程逻辑阵列(列(PLA)来实现。来实现。第第2章章 微处理器系统结构微处理器系统结构 10二、控制器(续)二、控制器(续)控制器的组成框图:控制器的组成框图:第第2章章 微处理器系统结构微
7、处理器系统结构 11二、控制器(续)二、控制器(续)时钟周期(时钟周期(T state):):主时钟的两个脉冲前沿主时钟的两个脉冲前沿的时间间隔称为一个时钟周期,又称为的时间间隔称为一个时钟周期,又称为T状态。它状态。它CPU操作的最小时间单位。操作的最小时间单位。机器周期:由机器周期:由25个个T状态组成一个机器周期状态组成一个机器周期(Machine Cycle),),称为称为M周期,又叫做总线周期,周期,又叫做总线周期,用来完成一个基本操作,如用来完成一个基本操作,如 MEM读读/写,写,I/O读读/写写等。等。指令周期:一条指令(的取出和)执行所需的指令周期:一条指令(的取出和)执行所
8、需的时间称为指令周期(时间称为指令周期(Instruction Cycle),),一条指令一条指令执行需执行需15个个M周期。周期。第第2章章 微处理器系统结构微处理器系统结构 12M2M5CLKT4T3T1T2 M1机器周期机器周期 指令周期指令周期(包括(包括15个机器周期)个机器周期)指令周期、机器周期与时钟周期的关系如下图:指令周期、机器周期与时钟周期的关系如下图:第第2章章 微处理器系统结构微处理器系统结构 13三、总线与总线(缓冲器)部件三、总线与总线(缓冲器)部件 所谓总线是指计算机中传送信息的一组通信线,所谓总线是指计算机中传送信息的一组通信线,将多个部件连成一个整体。可以简单
9、分为:将多个部件连成一个整体。可以简单分为:片内总线:在片内总线:在CPU内部或部件内部各单元之间传内部或部件内部各单元之间传送信息的总线(又可细分为单总线、双总线(输入送信息的总线(又可细分为单总线、双总线(输入/输输出出BUS)、)、多总线结构);多总线结构);片外总线:片外总线:CPU与外部部件之间传送信息的总线。与外部部件之间传送信息的总线。片外总线又称为系统总线,通常系统总线分为地片外总线又称为系统总线,通常系统总线分为地址总线、数据总线、控制总线,即所谓三总线结构。址总线、数据总线、控制总线,即所谓三总线结构。第第2章章 微处理器系统结构微处理器系统结构 14三、总线与总线(缓冲器
10、)部件(续)三、总线与总线(缓冲器)部件(续)因为多个部件均挂在总线上,但各部件工作情况因为多个部件均挂在总线上,但各部件工作情况并非完全一样(有的作为信源发,有的作为接收器并非完全一样(有的作为信源发,有的作为接收器收)。收)。由于数据或信息代码是用由于数据或信息代码是用电位高低电位高低来表示,若某来表示,若某一时刻有几个部件同时向一时刻有几个部件同时向BUS发送数据,则发送数据,则BUS上的上的情况就成为情况就成为不确定不确定的了,电路也可能被的了,电路也可能被烧毁烧毁。所以所以同一时刻只允许一个部件向同一时刻只允许一个部件向BUS发送信息发送信息。而接收数据就没有上述限制,同一时刻可允许
11、多而接收数据就没有上述限制,同一时刻可允许多个部件接收数据。个部件接收数据。第第2章章 微处理器系统结构微处理器系统结构 15三、总线与总线(缓冲器)部件(续)三、总线与总线(缓冲器)部件(续)总线缓冲器:在工作过程中,常常要求挂在总线缓冲器:在工作过程中,常常要求挂在BUS上的某些部件在电气连接上与上的某些部件在电气连接上与BUS“脱开脱开”,使这些使这些部部件对件对BUS上其它部件的工作不产生影响,为此,可在上其它部件的工作不产生影响,为此,可在部件内部设置三态缓冲器。部件内部设置三态缓冲器。DATA3态态BUFBUS;三态缓冲器(三态缓冲器(3态态BUF)处于:处于:低阻(高低电平)低阻
12、(高低电平)挂挂BUS上;上;高阻高阻逻辑上脱开。逻辑上脱开。第第2章章 微处理器系统结构微处理器系统结构 16三、总线与总线(缓冲器)部件(续)三、总线与总线(缓冲器)部件(续)“脱开脱开”状态:状态:处于高阻状态,开路状态,浮空状态;处于高阻状态,开路状态,浮空状态;逻辑上逻辑上“脱开脱开”,物理上仍连在一起。,物理上仍连在一起。总线缓冲器分为:总线缓冲器分为:单向三态缓冲器,如地址总线缓冲器只发地址信息,单向三态缓冲器,如地址总线缓冲器只发地址信息,(地址(地址BUS是单向的);是单向的);双向三态缓冲器,如数据总线缓冲器,既可发又可双向三态缓冲器,如数据总线缓冲器,既可发又可 收数据(
13、数据收数据(数据BUS是双向的)。是双向的)。第第2章章 微处理器系统结构微处理器系统结构 17三、总线与总线(缓冲器)部件(续)三、总线与总线(缓冲器)部件(续)采用总线结构的优点是:采用总线结构的优点是:减少信息传输线数目;减少信息传输线数目;提高系统的可靠性;提高系统的可靠性;增加系统灵活性;增加系统灵活性;便于实现系统标准化。便于实现系统标准化。第第2章章 微处理器系统结构微处理器系统结构 18四、寄存器阵列(四、寄存器阵列(Register Array)在在CPU内部,有一个临时存放地址和数据的寄存内部,有一个临时存放地址和数据的寄存器阵列。这个阵列因器阵列。这个阵列因CPU的不同而
14、不同,有的称寄存的不同而不同,有的称寄存器堆,寄存器多少有差别,但其功能相似。器堆,寄存器多少有差别,但其功能相似。寄存器阵列大致分为以下四组:寄存器阵列大致分为以下四组:1.1.存放待处理数据的寄存器;存放待处理数据的寄存器;2.2.存放地址码的寄存器;存放地址码的寄存器;3.3.存放控制信息的寄存器;存放控制信息的寄存器;4.4.起数据或地址缓冲器作用的寄存器起数据或地址缓冲器作用的寄存器。第第2章章 微处理器系统结构微处理器系统结构 19四、寄存器阵列(四、寄存器阵列(Register Array)(续)(续)存放地址的寄存器存放地址的寄存器1.指令指针(指令指针(IP)或程序计数器(或
15、程序计数器(PC:Program Counter););2.堆栈指示器(堆栈指示器(SP:Stack Pointer););3.其它可存放地址的寄存器(其它可存放地址的寄存器(Register),例如变址例如变址REG、基址、基址REG。存放数据的存放数据的REG1.累加器(累加器(AC:Accumulator);2.通用通用REG组,组,A,B,C,D等。等。第第2章章 微处理器系统结构微处理器系统结构 20 存放控制信息的存放控制信息的REGREG1.1.指令寄存器(指令寄存器(IR:Instruction RegisterIR:Instruction Register)指令代指令代码;码
16、;2.2.标志寄存器(标志寄存器(FR:Flag RegisterFR:Flag Register),),通常设有通常设有SFSF、ZFZF、AFAF、PFPF、CFCF、OFOF、IFIF、DFDF等标志。等标志。起数据缓冲作用的起数据缓冲作用的REGREG1.1.数据总线缓冲数据总线缓冲REGREG(DBUF:Data BUS BufferDBUF:Data BUS Buffer);2.2.地址总线缓冲地址总线缓冲REGREG (ABUF:Address BUS Buffer ABUF:Address BUS Buffer)。)。三态,单向,内外部地址三态,单向,内外部地址BUSBUS之间
17、缓冲。之间缓冲。四、寄存器阵列(四、寄存器阵列(Register Array)(续)(续)第第2章章 微处理器系统结构微处理器系统结构 212.1 2.1 8086/8088的结构的结构22 1.通用通用REG组组 AX 主累加器主累加器 BX 累加器或基址累加器或基址REG CX 累加器或计数器累加器或计数器 DX 累加器或累加器或I/O地址地址REGAHALBHBLCHCLDHDL第第2章章 微处理器系统结构微处理器系统结构 2.1 80862.1 808680888088的结构的结构23 2.指针与变址指针与变址REG组组 堆栈指针堆栈指针 基址指针基址指针 源变址器源变址器 目的变址器
18、目的变址器SPBPSIDI变址变址REG指针指针REG第第2章章 微处理器系统结构微处理器系统结构 24 3.段段REG组组 代码段代码段 数据段数据段 堆栈段堆栈段 附加段附加段 段段REG是存放内存地址的高位地址,地址是存放内存地址的高位地址,地址形成是由段寄存器地址左移形成是由段寄存器地址左移4位加上对应的位加上对应的偏移量。偏移量。CSDSSSES第第2章章 微处理器系统结构微处理器系统结构 25例如:被取指令的地址为例如:被取指令的地址为CS左移左移4位加上位加上IP的值。的值。若若CS=2000H,IP=0100H,则指令地址为,则指令地址为 2 0 0 0 0 H +0 1 0
19、0 H 2 0 1 0 0 H SS段与段与SP或或BP对应;对应;DS/ES与与SI、DI、BX等结合使用,串操作时有约等结合使用,串操作时有约定。定。第第2章章 微处理器系统结构微处理器系统结构 264.控制控制REG 指令指针指令指针 标志标志REG IPFRH FRL第第2章章 微处理器系统结构微处理器系统结构 27第第2章章 微处理器系统结构微处理器系统结构 5.8086CPU中有一个中有一个16位的标志寄存器(位的标志寄存器(FR)共设有共设有9个标志位,用以反映算术、逻辑运个标志位,用以反映算术、逻辑运算结果的特征及反映算结果的特征及反映CPU的控制,有的控制,有7位无用。位无用
20、。不同的指令对标志的影响是不同的(如传不同的指令对标志的影响是不同的(如传送类、转移类等指令不影响标志位,而算术逻送类、转移类等指令不影响标志位,而算术逻辑运算大部分都影响标志位);反之,不同的辑运算大部分都影响标志位);反之,不同的标志也影响着指令执行的结果。标志也影响着指令执行的结果。28 其中其中6个状态标志:个状态标志:CF、PF、AF、ZF、SF、OF 3个控制标志:个控制标志:IF、DF、TF。OFDFIFTFSFZFAFPFCF 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0第第2章章 微处理器系统结构微处理器系统结构 291.CF:进位标志(进位标志
21、(Carry Flag)当运算的结果在最高位(当运算的结果在最高位(8位,位,16位)上产生一位)上产生一个进位或借位时,个进位或借位时,CF=1;反之,反之,CF=0。2.PF:奇偶标志(奇偶标志(Parity Flag)当运算结果低当运算结果低8位中位中“1”的个数为偶数时,的个数为偶数时,PF=1;为奇数时,为奇数时,PF=0。第第2章章 微处理器系统结构微处理器系统结构 303.AF:辅助进位标志(辅助进位标志(Auxiliary Carry Flag)在算术运算中,当一个在算术运算中,当一个8位(或位(或16位)数的低位)数的低4位位向高向高4位(即位(即b3位向位向b4位)有进位或
22、借位时,位)有进位或借位时,AF=1;反之,反之,AF=0。此标志用于此标志用于BCD码运算指令中。码运算指令中。4.ZF:零标志(零标志(Zero Flag)当运算结果为全当运算结果为全“0”时,时,ZF=1;反之,反之,ZF=0。第第2章章 微处理器系统结构微处理器系统结构 315.SF:符号标志(符号标志(Sign Flag)当运算结果的最高位为当运算结果的最高位为“1”时,时,SF=1;反之,反之,SF=0。6.OF:溢出标志(溢出标志(Overflow Flag)在算术运算中,符号数的运算结果超出在算术运算中,符号数的运算结果超出8位或位或(16位)符号数表达的范围,位)符号数表达的
23、范围,OF=1;反之,反之,OF=0。(8位:位:-128+127;16位:位:-32768+32767)溢出与进位是两个不同性质的标志,一个反映符溢出与进位是两个不同性质的标志,一个反映符号数,一个反映纯数值。号数,一个反映纯数值。第第2章章 微处理器系统结构微处理器系统结构 32此外还设有此外还设有3个控制标志:个控制标志:7.DF:方向标志(方向标志(Direction Flag)用于控制字符串操作指令的步进方向。用于控制字符串操作指令的步进方向。当当DF=0时,表示从低址向高址以递增顺序进行时,表示从低址向高址以递增顺序进行串串处理;当处理;当DF=1时,表示从高址向低址以递减顺序进时
24、,表示从高址向低址以递减顺序进行行串处理。串处理。第第2章章 微处理器系统结构微处理器系统结构 338.IF:中断允许标志(中断允许标志(Interrupt enable Flag)当当IF=1时,允许中断;当时,允许中断;当IF=0时,禁止中断。时,禁止中断。该标志可用指令该标志可用指令STI或或CLI使其置使其置1或或0。IF标志对标志对 NMI 信号或由内部中断(信号或由内部中断(INT n)无无 作用。作用。第第2章章 微处理器系统结构微处理器系统结构 349.TF:陷阱或跟踪标志(陷阱或跟踪标志(Trap Flag)当当TF=1时,时,CPU进入单步工作方式,每执行完一进入单步工作方
25、式,每执行完一条指令就自动产生一个内部中断,以便进行程序调试。条指令就自动产生一个内部中断,以便进行程序调试。当当TF=0时,连续执行程序。时,连续执行程序。(没有专门的指令使(没有专门的指令使TF置置1或或0)第第2章章 微处理器系统结构微处理器系统结构 35 8086 CPU按功能可分为两大部分:按功能可分为两大部分:一部分为一部分为BIU(BUS Interface Unit);专门负责取指令和存取操作数。它与专门负责取指令和存取操作数。它与BUS打交道。打交道。一部分为一部分为EU(Execution Unit)。)。专门负责分析指令与执行指令。它不与系统专门负责分析指令与执行指令。它
26、不与系统BUS 打交道。打交道。第第2章章 微处理器系统结构微处理器系统结构 368086内部结构框图内部结构框图:第第2章章 微处理器系统结构微处理器系统结构 37 BIU与外部总线打交道,负责取指令、读写操作与外部总线打交道,负责取指令、读写操作数、地址转换与总线控制;数、地址转换与总线控制;EU负责指令译码与执行指令的工作。负责指令译码与执行指令的工作。取指令与执行指令操作是并行的,提高了取指令与执行指令操作是并行的,提高了CPU的的利用率,这种重叠操作技术,提高了整个系统的运行利用率,这种重叠操作技术,提高了整个系统的运行速度。速度。第第2章章 微处理器系统结构微处理器系统结构 38
27、早期的计算机取指令、执行指令是按照时间顺序早期的计算机取指令、执行指令是按照时间顺序进行的。而进行的。而8086 CPU 是二者并行同时操作的。如图:是二者并行同时操作的。如图:t队列队列BIUEU t 重叠执行指令的过程重叠执行指令的过程取指取指1执行执行1取指取指2执行执行212,33,4,54,5,6取指令取指令1取指令取指令2取指令取指令3读数据读数据等待等待执行执行1执行执行2执行执行3第第2章章 微处理器系统结构微处理器系统结构 391.BIU总线接口单元总线接口单元 8086CPU与外设的接口部件,提供与外设的接口部件,提供16位数据总线位数据总线与与20位地址总线。位地址总线。
28、内部由段内部由段REG、IP、内部通信内部通信REG、指令队列、指令队列、地址加法器和总线控制逻辑等地址加法器和总线控制逻辑等组成组成;完成取指令、指令排队、读完成取指令、指令排队、读/写操作数、地址转换写操作数、地址转换与总线控制等与总线控制等工作工作;队列为队列为先进先出原则组织先进先出原则组织FIFO(First In FirstOut),实现流水线操作,高性能实现流水线操作,高性能CPU更是如此。更是如此。8086有有6个个Byte指令队列;需要两个指针,指令队列;需要两个指针,OUT与与IN指针;指针;第第2章章 微处理器系统结构微处理器系统结构 40当遇到当遇到BIU正准备取指令而
29、正准备取指令而 EUBIU申请读申请读/写写 MEM或或 I/O时,时,则则先先取指令,取指令,后后读读/写操作数;写操作数;当队列中当前有两个字节空间时,当队列中当前有两个字节空间时,BIU顺序预取指顺序预取指令并令并填满填满队列;队列;当遇到当遇到CALL、JMP、INT n等指令时,先把等指令时,先把 IP 压压入堆栈,再清除队列,再重新取满队列;入堆栈,再清除队列,再重新取满队列;第第2章章 微处理器系统结构微处理器系统结构 412.EU执行单元执行单元组成:组成:ALU、FR、8个通用个通用REG、暂存器、队列暂存器、队列控制逻辑与时序控制逻辑(控制逻辑与时序控制逻辑(EU控制器)等
30、;控制器)等;完成工作:指令译码与执行指令;完成工作:指令译码与执行指令;EU没有连接到总线上,所以对系统总线来说,它没有连接到总线上,所以对系统总线来说,它是是“外界外界”的。的。第第2章章 微处理器系统结构微处理器系统结构 422.2 2.2 8086/8088的的存储器结构与堆栈存储器结构与堆栈43 8086 8086是一种单片微处理器芯片,内外部数据总线是一种单片微处理器芯片,内外部数据总线1616位,对外位,对外4040条引脚,主时钟条引脚,主时钟5 5MHzMHz、8MHz8MHz、10MHz10MHz等。等。2020条地址引脚,直接寻址条地址引脚,直接寻址2 22020 =1=1
31、MByteMByte,可访问可访问6464K K个个I/OI/O端口,具有端口,具有2424种寻址方式,可以对位、字节、字、种寻址方式,可以对位、字节、字、字符串、字串、字符串、字串、BCDBCD码、码、ASCllASCll码等多种数据类型进行码等多种数据类型进行处理。处理。80386 80386 Pentium Pentium处理器都是处理器都是3232位的地址,寻址位的地址,寻址范围为范围为2 23232=4=4GBytes=GBytes=(4096MB4096MB)。)。2.2 80862.2 808680888088的存储器结构与堆栈的存储器结构与堆栈第第2章章 微处理器系统结构微处理
32、器系统结构 2.2.1 80862.2.1 808680888088的存储器结构的存储器结构 1.1.存储器基本结构存储器基本结构 442.2 80862.2 808680888088的存储器结构与堆栈的存储器结构与堆栈第第2章章 微处理器系统结构微处理器系统结构 2.2.1 80862.2.1 808680888088的存储器结构的存储器结构 在存储器中,每个存储单元都有一个地址,每在存储器中,每个存储单元都有一个地址,每个单元中都可存储一个字节。任何两个相邻的字节个单元中都可存储一个字节。任何两个相邻的字节单元可以存放一个单元可以存放一个16位的字(位的字(word),在一个字中),在一个
33、字中的每个字节有一个字节地址,这两个地址中数值较的每个字节有一个字节地址,这两个地址中数值较小的那个地址作为该字的地址。如果在存储器中存小的那个地址作为该字的地址。如果在存储器中存放一个字符串(字节序列),那么字符串的第一个放一个字符串(字节序列),那么字符串的第一个字节存放在地址较低的单元中,以后依次存放。字节存放在地址较低的单元中,以后依次存放。452.2 80862.2 808680888088的存储器结构与堆栈的存储器结构与堆栈第第2章章 微处理器系统结构微处理器系统结构 2.2.1 80862.2.1 808680888088的存储器结构的存储器结构 例如从例如从l000Hl000H
34、单元取出一个字,单元取出一个字,则这个字是则这个字是3412H3412H,若从,若从l005Hl005H单单元取出一个字,则这个字是元取出一个字,则这个字是CDABHCDABH。无论是从偶地址单元取。无论是从偶地址单元取字或者是从奇地址单元取字都是字或者是从奇地址单元取字都是把该单元与下一个单元两个相邻把该单元与下一个单元两个相邻地址单元的地址单元的1616位数取出来,且下位数取出来,且下一字节单元为高一字节单元为高8 8位数。位数。1000H 1000H 12121001H1001H34341002H1002H56561003H1003H78781004H1004H90901005H1005
35、HABAB1006H1006HCDCD偶地址字偶地址字奇地址字奇地址字462.2 80862.2 808680888088的存储器结构与堆栈的存储器结构与堆栈第第2章章 微处理器系统结构微处理器系统结构 2.2.1 80862.2.1 808680888088的存储器结构的存储器结构 8086 8086中有访问字节的指令也有访问字的指令,不论是中有访问字节的指令也有访问字的指令,不论是读存储器还是写存储器,每次总是读存储器还是写存储器,每次总是1616位。执行访问字节指位。执行访问字节指令时,只用了令时,只用了8 8位,另外位,另外8 8位则被忽略了。这位则被忽略了。这1616位总是存储位总是
36、存储器内两个连续字节单元的内容,其中第一个字节的地址是器内两个连续字节单元的内容,其中第一个字节的地址是偶地址时,可以通过一次访问来实现其功能。然而,对于偶地址时,可以通过一次访问来实现其功能。然而,对于奇地址的字的读写指令,奇地址的字的读写指令,CPUCPU必须读写两个连续的偶地址必须读写两个连续的偶地址字,两次访问存储器,每次都忽略掉不需要的半个字,并字,两次访问存储器,每次都忽略掉不需要的半个字,并对剩下的两个字节进行某种形式的字节调整。对剩下的两个字节进行某种形式的字节调整。472.2 80862.2 808680888088的存储器结构与堆栈的存储器结构与堆栈第第2章章 微处理器系统
37、结构微处理器系统结构 2.2.1 80862.2.1 808680888088的存储器结构的存储器结构 于是,读写偶地址的字的指令对操作数的读写于是,读写偶地址的字的指令对操作数的读写操作只需访问一次存储器;读写奇地址的字的指令操作只需访问一次存储器;读写奇地址的字的指令则必须两次访问存储器,分别地取它所需要的那半则必须两次访问存储器,分别地取它所需要的那半个字,并进行某种形式的字节调整,以形成指令所个字,并进行某种形式的字节调整,以形成指令所需要的字。需要的字。字操作数存放在偶地址开始是值得推荐的。字操作数存放在偶地址开始是值得推荐的。48例:把例:把5678H写入写入1002H单元。单元。
38、78H1002H 56H1003H7856M1002H 1003H第第2章章 微处理器系统结构微处理器系统结构 49例:把字串例:把字串12345678H写入写入1000H单元。单元。781000H 121003H 读:从读:从1002H读出时,读一个字节是读出时,读一个字节是34,读一个字是读一个字是1234;从从1001读出一个字是读出一个字是3456H,但读但读 奇址的字时,需访问内存两次,忽略掉奇址的字时,需访问内存两次,忽略掉 78H与与12H;读写字节时每次数据总线上读写字节时每次数据总线上 仍是仍是16位,忽略掉另一个字节。位,忽略掉另一个字节。78563412M10001001
39、10021003第第2章章 微处理器系统结构微处理器系统结构 50 2.2 80862.2 808680888088的存储器结构与堆栈的存储器结构与堆栈第第2章章 微处理器系统结构微处理器系统结构 2.2.1 80862.2.1 808680888088的存储器结构的存储器结构 2.2.存储器的分段管理存储器的分段管理 分段原因分段原因:CPU CPU内没有设置内没有设置2020位的地址寄存器,只有位的地址寄存器,只有1616位位的寄存器,的寄存器,1616位寄存器无法存放位寄存器无法存放2020位地址,所位地址,所以把以把2020位地址分为基地址(段)和偏移量;分位地址分为基地址(段)和偏移
40、量;分别存放在两个别存放在两个1616位寄存器中。位寄存器中。51 2.2 80862.2 808680888088的存储器结构与堆栈的存储器结构与堆栈第第2章章 微处理器系统结构微处理器系统结构 2.2.1 80862.2.1 808680888088的存储器结构的存储器结构 2.2.存储器的分段管理存储器的分段管理 好处是好处是:程序区、堆栈区和数据区可以互相隔离,方程序区、堆栈区和数据区可以互相隔离,方便程序的便程序的再定位再定位。允许段重叠允许段重叠:根据情况,段与段之间可以重叠,几个段可根据情况,段与段之间可以重叠,几个段可以在一个以在一个6464K K段内,但各段的起始地址是不同段
41、内,但各段的起始地址是不同的。的。52 80868086系统存储器分段示意图系统存储器分段示意图 第第2章章 微处理器系统结构微处理器系统结构 53 存储器的存储器的实际地址实际地址就是物理地址(或绝对地址)就是物理地址(或绝对地址)2020位;存储器的位;存储器的逻辑地址逻辑地址是段基址和是段基址和1616位偏移量组成。位偏移量组成。因为段因为段REGREG为为1616位,所以每位,所以每6464KByteKByte为一段。为一段。实际地址是由段地址左移实际地址是由段地址左移4 4位加上所对应的位加上所对应的1616位位地址偏移量。地址偏移量。CPUCPU中的中的BIUBIU中有一个中有一个
42、2020位地址加法器位地址加法器,用来形,用来形成成2020位的物理地址(段自动左移位的物理地址(段自动左移4 4位与偏移量相加)位与偏移量相加)。第第2章章 微处理器系统结构微处理器系统结构 54 不同的逻辑地址可以变换成同一个物理地址,不同的逻辑地址可以变换成同一个物理地址,反之亦然。反之亦然。例如:物理地址为例如:物理地址为 25000 25000H H 逻辑地址:段基址为逻辑地址:段基址为20002000H H,偏移量偏移量50005000H H 段基址为段基址为21002100H H,偏移量偏移量40004000H H 段基址为段基址为22002200H H,偏移量偏移量300030
43、00H H第第2章章 微处理器系统结构微处理器系统结构 55 8086 8086可访问可访问8 8位位I/OI/O端口或端口或1616位位I/OI/O端口,若直端口,若直接寻址方式寻接寻址方式寻I/OI/O端口,用端口,用8 8位地址,可访问位地址,可访问2 28 8=256=256个端口地址;若用间接寻址方式寻个端口地址;若用间接寻址方式寻I/OI/O,用用1616位地位地址,可访问址,可访问2 21616=64=64K K个端口地址;间接寻址通过个端口地址;间接寻址通过DXDX寄存器,寄存器,I/OI/O端口不设段端口不设段REGREG,可以认为全部端口可以认为全部端口都在同一个段内。都在
44、同一个段内。8086 8086系列的处理器设有专门的系列的处理器设有专门的I/OI/O指令指令 (即(即ININ和和OUTOUT指令)指令)。第第2章章 微处理器系统结构微处理器系统结构 56 什么是堆栈?什么是堆栈?堆栈是一个按照后进先出(堆栈是一个按照后进先出(LIFO Last In First Out)的原则存取数据的部件或区域。的原则存取数据的部件或区域。硬件堆栈:内部寄存器作为堆栈,工作速度快,硬件堆栈:内部寄存器作为堆栈,工作速度快,容量不大:容量不大:软件堆栈:用内存作为堆栈,工作速度慢,容量软件堆栈:用内存作为堆栈,工作速度慢,容量大,内存有多大,堆栈就有多大,堆栈由一个堆栈
45、大,内存有多大,堆栈就有多大,堆栈由一个堆栈指针指针 SP 和一个栈区组成。和一个栈区组成。2.2.2 2.2.2 堆栈的概念堆栈的概念2.2 80862.2 808680888088的存储器结构与堆栈的存储器结构与堆栈第第2章章 微处理器系统结构微处理器系统结构 57 为什么要用堆栈?为什么要用堆栈?主程序与子程序,主程序调用子程序,或者子程主程序与子程序,主程序调用子程序,或者子程序调用子程序,或者处理中断服务程序,序调用子程序,或者处理中断服务程序,CPU必须把必须把主程序调用子程序指令的下一条指令的地址(或中断主程序调用子程序指令的下一条指令的地址(或中断时的断点)即时的断点)即PC值
46、保留下来,才能保证子程序(或中值保留下来,才能保证子程序(或中断服务程序)执行完之后正确返回到主程序继续执行。断服务程序)执行完之后正确返回到主程序继续执行。另外,调用子程序之前的有关另外,调用子程序之前的有关REG、标志位也要标志位也要及时正确的保存下来。及时正确的保存下来。第第2章章 微处理器系统结构微处理器系统结构 58 堆栈如何操作?堆栈如何操作?堆栈必须设有一个区域(栈区),还需一个指针堆栈必须设有一个区域(栈区),还需一个指针(SP),),指示栈在什么位置。指示栈在什么位置。8086与栈有关的寄存器与栈有关的寄存器是是SS和和SP。SS:标识现行堆栈的基地址;标识现行堆栈的基地址;
47、SP:标识现行堆栈的段内偏移量。标识现行堆栈的段内偏移量。8086中的栈是中的栈是“向下生成向下生成”的栈,即随着入栈数的栈,即随着入栈数据据增加,增加,SP值减小。有些处理器或单片机还有值减小。有些处理器或单片机还有“向上生向上生成成”的栈。的栈。第第2章章 微处理器系统结构微处理器系统结构 59 SP SP值由指令值由指令MOV SPMOV SP,datadata设定初值。设定初值。空栈时,栈顶与栈底是重合的,随着压入栈中数空栈时,栈顶与栈底是重合的,随着压入栈中数据增加,堆栈扩展,据增加,堆栈扩展,SPSP减小,减小,SPSP始终指向栈顶。始终指向栈顶。堆栈操作有专门的指令堆栈操作有专门
48、的指令 PUSH PUSH 与与 POP POP。8086 8086的入栈与出栈弹出操作每次是一个字,而不的入栈与出栈弹出操作每次是一个字,而不是一个字节。是一个字节。第第2章章 微处理器系统结构微处理器系统结构 60例:若例:若SS=1200H,SP=1000H,执行执行PUSH AX (设设AX=1234H),),看栈针与栈中的内容。看栈针与栈中的内容。先修改栈针,再压入数据,先压入高字节,后压先修改栈针,再压入数据,先压入高字节,后压入低字节。分两步:入低字节。分两步:1.先先SP1SP,压入高位字节(即压入高位字节(即AH内容);内容);2.再再SP1SP,压入低位字节(即压入低位字节
49、(即AL内容)。内容)。第第2章章 微处理器系统结构微处理器系统结构 61 压入堆栈操作如图:压入堆栈操作如图:SS16+SP 12000H +1000H 13000H 3412 低址低址 高址高址 SP=1000H SP10FFFH SP10FFEH M12FFEH12FFFH13000 HAX=12 34(2)(1)第第2章章 微处理器系统结构微处理器系统结构 62出栈操作与入栈操作相反:出栈操作与入栈操作相反:1.先弹出低位内容,先弹出低位内容,修改修改SPSP+1;2.再弹出高位内容,再修改再弹出高位内容,再修改SPSP+1;注:注:CALL与与RET中保护断点与恢复断点是由指令自中保
50、护断点与恢复断点是由指令自动完成的。动完成的。第第2章章 微处理器系统结构微处理器系统结构 63例:若例:若SS=1500H,SP=1000H,执行执行POP BX (设栈中数据设栈中数据=5678H),),看栈针与栈中的内容看栈针与栈中的内容 如何变化。如何变化。弹出也分为两步:弹出也分为两步:先弹出低先弹出低8位(位(78H BL),),修改栈针,修改栈针,SP+1SP;再弹出高再弹出高8位(位(56H BH),),再修改栈针,再修改栈针,SP+1SP;执行执行 POP BX 指令后,指令后,BX=5678H,SP=1002H,SS=1500H,堆栈中的数据仍然不变。堆栈中的数据仍然不变。