第2章 微处理器的编程结构_第1页
第2章 微处理器的编程结构_第2页
第2章 微处理器的编程结构_第3页
第2章 微处理器的编程结构_第4页
第2章 微处理器的编程结构_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第2 2章章 微处理器的编程结构微处理器的编程结构2.1 2.1 微处理器的三种工作模式微处理器的三种工作模式2.2 2.2 微处理器的编程结构微处理器的编程结构2.3 2.3 实模式下的存储器寻址实模式下的存储器寻址2.4 2.4 存储器地址的交叉及字节、字存储器地址的交叉及字节、字 和双字的寻址和双字的寻址 2.1 2.1 微处理器的三种工作模式微处理器的三种工作模式 2.1.1 2.1.1 三种工作模式三种工作模式 实地址模式实地址模式(Real-Address ModeReal-Address Mode)也称也称实模式实模式,简单地说,是指,简单地说,是指8028680286以上以上

2、的微处理器所采用的的微处理器所采用的80868086的工作模式。的工作模式。在实模式下,采用类似在实模式下,采用类似8086 CPU8086 CPU的体系的体系结构,其寻址机制,尤其是存储器寻址,结构,其寻址机制,尤其是存储器寻址,以及中断处理机制均和以及中断处理机制均和80868086相同。相同。1.1.实地址模式实地址模式2.2.保护模式保护模式 保护的虚地址模式保护的虚地址模式(Protected Virtual Protected Virtual Address ModeAddress Mode)简称虚地址模式或保护模式,)简称虚地址模式或保护模式,是支持多任务的一种工作模式,它能提供

3、一是支持多任务的一种工作模式,它能提供一系列的保护机制。系列的保护机制。目的就是对程序的运行加以保护。目的就是对程序的运行加以保护。 3.3.虚拟虚拟80868086模式模式 虚拟虚拟80868086模式模式(Virtual 8086 ModeVirtual 8086 Mode)又称又称“V86V86模式模式”,是运行在保护模式中的,是运行在保护模式中的实模式,为了在实模式,为了在3232位保护模式下执行纯位保护模式下执行纯1616位位程序。它不是一个真正的程序。它不是一个真正的CPUCPU模式,还属于模式,还属于保护模式,它是既有保护功能又能执行保护模式,它是既有保护功能又能执行808680

4、86代码的工作模式。代码的工作模式。2.1.2 2.1.2 三种工作模式的相互转换三种工作模式的相互转换 图图2-1 2-1 三种工作模式的相互转换三种工作模式的相互转换 上电或复位上电或复位实地址实地址模式模式保护模式保护模式设置设置CRCR0 0中中b b0 0位位 (b(b0 0=1)=1)V86V86模式模式 复位复位 执行执行IRETDIRETD指令指令或任务切换或任务切换 中断中断 复位复位CRCR0 0中中b b0 0位位 (b(b0 0=0)=0) 以上所分析的以上所分析的三种工作模式三种工作模式可以相互转换,可以相互转换,三种工作模式三种工作模式的转换图如图的转换图如图2-1

5、2-1所示。所示。2.2 2.2 微处理器的编程结构微处理器的编程结构 2.2.1 162.2.1 16位微处理器的编程结构位微处理器的编程结构 1.8086 CPU 1.8086 CPU 内部结构框图内部结构框图 8086 CPU 8086 CPU从功能上看,它由两大部件组成,分为从功能上看,它由两大部件组成,分为总线接口部件总线接口部件BIUBIU和和执行部件执行部件EUEU。 微处理器的微处理器的编程结构编程结构是指编程人员眼中看是指编程人员眼中看到的微处理器的软件结构模型。软件结构为编程到的微处理器的软件结构模型。软件结构为编程人员从软件的角度去了解计算机系统的操作和运人员从软件的角度

6、去了解计算机系统的操作和运行提供了便利。行提供了便利。 编程人员主要掌握微处理器内部的各种寄编程人员主要掌握微处理器内部的各种寄存器的组成、功能及如何使用它们等。存器的组成、功能及如何使用它们等。 内部数据总线(内部数据总线(16位)位)AH ALBH BLCH CLDH DL堆栈指针堆栈指针 SP基址指针基址指针 BP源变址源变址 DI目的变址目的变址 SI通通 用用 寄寄 存存 器器暂存寄存器暂存寄存器ALU标志寄存器标志寄存器FlagsEU 控控制电路制电路执行单元执行单元EU地址总线地址总线20位位(8位)位)代码段代码段 CS数据段数据段 DS堆栈段堆栈段 SS附加段附加段 ES指令

7、指针IP内部暂存器内部暂存器1 2 3 4 5 6数据总线数据总线8088:8位位8086:16位位I/O控控制逻辑制逻辑指令队列指令队列80888086 段段寄寄存存器器外部外部总总线线总线接口总线接口单元单元BIU图图2-2 8086 CPU2-2 8086 CPU内部结构框图内部结构框图 BXBXAXAXDXDXCXCX 总线接口部件总线接口部件BIUBIU是是8086 CPU8086 CPU与外部存储与外部存储器和器和I/OI/O端口的接口,它提供了端口的接口,它提供了1616位双向数据位双向数据总线和总线和2020位地址总线,负责位地址总线,负责CPUCPU与存储器及与存储器及I/O

8、I/O端口之间的数据传送操作。端口之间的数据传送操作。 8086 CPU 8086 CPU的的BIUBIU取指令和取指令和EUEU执行指令是并行进行的,执行指令是并行进行的,这种这种并行工作方式并行工作方式大大提高了系统的工作速度。大大提高了系统的工作速度。 执行部件执行部件EUEU从从BIUBIU中的指令队列获取指令,中的指令队列获取指令,对指令进行译码分析并执行,执行指令所需要对指令进行译码分析并执行,执行指令所需要的操作数和运算结果都是通过总线接口部件与的操作数和运算结果都是通过总线接口部件与指定的内存单元或外设端口进行传送的。指定的内存单元或外设端口进行传送的。(1 1)总线接口部件)

9、总线接口部件BIU BIU 总线接口部件总线接口部件BIUBIU具有下列主要功能:由具有下列主要功能:由2020位位地址加法器地址加法器产生产生2020位的物理地址位的物理地址;预取指令并存;预取指令并存入先进先出的指令队列缓冲器中;从内存和入先进先出的指令队列缓冲器中;从内存和I/OI/O接口读接口读/ /写操作数;发出各种总线控制信号,等写操作数;发出各种总线控制信号,等等。它由下列各部分组成:等。它由下列各部分组成:4 4个个1616位段寄存器位段寄存器 数据段寄存器数据段寄存器(Data SegmentData Segment,DSDS) 代码段寄存器代码段寄存器(Code Segme

10、ntCode Segment,CSCS) 附加段寄存器附加段寄存器(Extra SegmentExtra Segment,ESES) 堆栈段寄存器堆栈段寄存器(Stack SegmentStack Segment,SSSS)总线控制电路总线控制电路,用于控制总线的开放、关闭及,用于控制总线的开放、关闭及信号的传送方向等。信号的传送方向等。1616位指令指针位指令指针IPIP(Instruction PointerInstruction Pointer):):专用于存放下一条将要执行指令的偏移地址。专用于存放下一条将要执行指令的偏移地址。2020位地址加法器位地址加法器:它能将:它能将1616位

11、逻辑地址位逻辑地址变换成变换成读读/ /写存储器所需要的写存储器所需要的2020位物理地址位物理地址。实际上。实际上由它完成由它完成2020位地址的加法操作。位地址的加法操作。6 6字节指令队列缓冲器字节指令队列缓冲器,用于预存放,用于预存放6 6字节的指字节的指令代码。令代码。(2 2)指令执行部件)指令执行部件EU EU 指令执行部件指令执行部件EUEU的功能是进行指令译码和执行的功能是进行指令译码和执行指令,并向指令,并向BIUBIU提出访问存储器或提出访问存储器或I/OI/O接口的请求。接口的请求。它由以下几个部件组成:它由以下几个部件组成: 算术逻辑部件算术逻辑部件ALUALU (A

12、rithmetic Logic UnitArithmetic Logic Unit) 标志寄存器标志寄存器FLAGSFLAGS(又称为程序状态字(又称为程序状态字PSWPSW),用),用于存放于存放ALUALU运算结果的标志等。运算结果的标志等。 寄存器组寄存器组:8 8个通用的个通用的1616位寄存器、堆栈指针位寄存器、堆栈指针SPSP和基址指针和基址指针BPBP。 执行部件控制电路执行部件控制电路 2.8086 CPU2.8086 CPU内部寄存器结构内部寄存器结构 8086 CPU 8086 CPU内部寄存器结构在计算机中起了重要的内部寄存器结构在计算机中起了重要的作用,寄存器是微处理器

13、中的重要组成之一,它的存作用,寄存器是微处理器中的重要组成之一,它的存取速度比内存快很多,因此,在程序执行的过程中,取速度比内存快很多,因此,在程序执行的过程中,寄存器可用来存放运算过程中所需要的操作数、操作寄存器可用来存放运算过程中所需要的操作数、操作数地址和中间结果等。数地址和中间结果等。 8086 CPU8086 CPU内包含内包含4 4组组1616位寄存器位寄存器。它们分别是。它们分别是通通用寄存器组用寄存器组、段寄存器段寄存器、指令指针寄存器指令指针寄存器及及标志位寄标志位寄存器存器。 (1 1)通用寄存器组)通用寄存器组 通用寄存器组通用寄存器组包括包括8 8个个1616位位的通用

14、寄存器,它的通用寄存器,它们是们是AXAX,BXBX,CXCX,DXDX,SPSP,BPBP,SISI和和DIDI,其中,其中4 4个个寄存器寄存器AXAX,BXBX,CXCX和和DXDX又称为数据寄存器,它们可又称为数据寄存器,它们可以存放以存放1616位数据或地址,也可以分为两个位数据或地址,也可以分为两个8 8位的寄位的寄存器使用,当作为存器使用,当作为8 8位寄存器使用时,高位寄存器使用时,高8 8位寄存器位寄存器的名称为的名称为AHAH、BHBH、CHCH和和DHDH,低,低8 8位则为位则为ALAL、BLBL、CLCL和和DLDL。 SPSP,BPBP,SISI和和DIDI这这4

15、4个通用寄存器只能用作个通用寄存器只能用作1616位寄存器,通常用于存储器寻址时提供偏移地址,位寄存器,通常用于存储器寻址时提供偏移地址,也可以用作数据寄存器。也可以用作数据寄存器。 每个寄存器还有它们各自的专用场合,其中:每个寄存器还有它们各自的专用场合,其中:AXAX称为累加器,使用最频繁,用于算术运算、逻辑运称为累加器,使用最频繁,用于算术运算、逻辑运算以及在输入输出指令中作数据寄存器使用等;算以及在输入输出指令中作数据寄存器使用等;BXBX称为基址寄存器,在间接寻址中作基址寄存器,常称为基址寄存器,在间接寻址中作基址寄存器,常用作偏移地址访问数据段;用作偏移地址访问数据段;CXCX称为

16、计数寄存器,作为循环和串行操作等指令中的称为计数寄存器,作为循环和串行操作等指令中的隐含计数器;隐含计数器;DXDX称为数据寄存器,常用来存放称为数据寄存器,常用来存放双字长数据的高双字长数据的高1616位位或存放或存放外设端口的地址外设端口的地址。 源变址寄存器源变址寄存器SISI(Source(Source Index) Index)和和目的变址寄存器目的变址寄存器DIDI(Destination(Destination Index) Index),通常与,通常与DSDS数据段寄存器一起数据段寄存器一起使用,用来确定数据段中某一存储单元的地址。在进行使用,用来确定数据段中某一存储单元的地址

17、。在进行字符串操作时,字符串操作时,SISI用于存放用于存放源操作数源操作数的偏移地址,的偏移地址,DIDI用用于存放于存放目的操作数目的操作数的偏移地址,的偏移地址,SISI与与DSDS联用,联用,DIDI与与ESES联联用,分别寻址数据段和附加数据段。用,分别寻址数据段和附加数据段。 SPSP,BPBP,SISI和和DIDI这这4 4个通用寄存器通常用于存储器个通用寄存器通常用于存储器寻址时提供偏移地址,也可以用作数据寄存器。寻址时提供偏移地址,也可以用作数据寄存器。 SPSP称为堆栈指针(称为堆栈指针(Stack PointerStack Pointer),或称堆栈指),或称堆栈指示器,

18、必须与示器,必须与SSSS堆栈段寄存器联用。堆栈段寄存器联用。SPSP用于指示用于指示栈底栈底或栈顶或栈顶的偏移地址。的偏移地址。 BPBP称为基址指针称为基址指针(Base Pointer)(Base Pointer),常用作偏移地址,常用作偏移地址访问访问堆栈段堆栈段。 AH ALBH BLCH CLDH DL SP BP SI DI IP FLAGSAX BX CX DX 堆栈指针寄存器堆栈指针寄存器基址指针寄存器基址指针寄存器源变址寄存器源变址寄存器目变址寄存器目变址寄存器指令指针指令指针标志寄存器标志寄存器通用寄存器通用寄存器数据寄存器数据寄存器图图2-3 8086 CPU2-3 8

19、086 CPU内部寄存器内部寄存器 CS DS SS ES代码段寄存器代码段寄存器堆栈段寄存器堆栈段寄存器数据段寄存器数据段寄存器附加段寄存器附加段寄存器15 87 015 87 0(2 2)段寄存器)段寄存器 8086 CPU 8086 CPU内部设有内部设有4 4个个1616位段寄存器位段寄存器,这些段寄,这些段寄存器的内容与段内偏移地址组合形成存器的内容与段内偏移地址组合形成2020位物理地址位物理地址。 代码段寄存器代码段寄存器CSCS:代码段是一个随机存取存储区,用:代码段是一个随机存取存储区,用来保存微处理器使用的程序代码。在来保存微处理器使用的程序代码。在80868086系统中,

20、代系统中,代码段寄存器码段寄存器CSCS定义了代码段的起始地址。代码段的最定义了代码段的起始地址。代码段的最大存储空间为大存储空间为64KB64KB。 数据段寄存器数据段寄存器DSDS:数据段也是一个随机存取存储区,:数据段也是一个随机存取存储区,用来保存程序执行过程中所使用的数据及存放程序运用来保存程序执行过程中所使用的数据及存放程序运行后的结果。数据段寄存器行后的结果。数据段寄存器DSDS定义了数据段的起始地定义了数据段的起始地址,其最大存储空间也是址,其最大存储空间也是64KB64KB。 附加段寄存器附加段寄存器ESES:附加段是为某些串操作指令存放操:附加段是为某些串操作指令存放操作数

21、而附加的一个数据段。与数据段类似,附加段寄作数而附加的一个数据段。与数据段类似,附加段寄存器存器ESES定义了附加段的起始地址,其最大存储空间也定义了附加段的起始地址,其最大存储空间也为为64KB64KB。 堆栈段寄存器堆栈段寄存器SSSS:堆栈段是一个特殊的随机存取存储:堆栈段是一个特殊的随机存取存储区,用来临时保存程序执行过程中有关寄存器的内容区,用来临时保存程序执行过程中有关寄存器的内容、程序的地址信息及传递参数等。堆栈段寄存器、程序的地址信息及传递参数等。堆栈段寄存器SSSS与与堆栈指针堆栈指针SPSP共同确定堆栈段内的存取地址。其最大存共同确定堆栈段内的存取地址。其最大存储空间为储空

22、间为64KB64KB。 (3 3)指令指针)指令指针IPIP 8086 CPU 8086 CPU中设置了一个中设置了一个1616位指令指针位指令指针IPIP,IPIP用用来存放将要执行的下一条指令在当前代码段中的偏来存放将要执行的下一条指令在当前代码段中的偏移地址,它与代码段寄存器移地址,它与代码段寄存器CSCS联用,以确定下一条联用,以确定下一条指令的物理地址,指令的物理地址,8086 CPU8086 CPU利用利用CSCS:IPIP取得下一条取得下一条要执行的指令的物理地址。要执行的指令的物理地址。 例例【2-12-1】设存放在设存放在CSCS中的当前代码段基地址值是中的当前代码段基地址值

23、是3000H3000H,IPIP指令指针存放下一条要执行指令的段内指令指针存放下一条要执行指令的段内偏移地址是偏移地址是1234H1234H,组合后生成的,组合后生成的2020位物理地址位物理地址PA=3000HPA=3000H16+1234H=31234H16+1234H=31234H(4 4)标志寄存器)标志寄存器 标志寄存器标志寄存器(FLAGSFLAGS)用于反映部分指令(例算)用于反映部分指令(例算术运算及逻辑运算指令)执行结果的状态,常用作术运算及逻辑运算指令)执行结果的状态,常用作后续条件转移指令的转移控制条件。标志寄存器为后续条件转移指令的转移控制条件。标志寄存器为1616位位

24、,实际使用了其中的,实际使用了其中的9 9位,所用各位的含义如图位,所用各位的含义如图2-42-4所示。所示。 图图2-4 2-4 标志寄存器标志寄存器FLAGS FLAGS OF1115 14 13 12DF10IF9TF8SF7ZF65AF43PF21CF0标志的分类标志的分类 根据功能,将根据功能,将9 9个标志位分成两类:一类为个标志位分成两类:一类为状状态标志态标志,表示运算后的状态特征,它影响后面的,表示运算后的状态特征,它影响后面的操作。操作。状态标志有状态标志有6 6位位:CFCF、PFPF、AFAF、ZFZF、SFSF和和OFOF;另一类为另一类为控制标志控制标志,用来控制,

25、用来控制CPUCPU的操作,的操作,控制标控制标志有志有3 3位位:TFTF、IFIF和和DFDF。 标志位标志位 CFCF(Carry FlagCarry Flag),),进位标志位进位标志位。本次运算。本次运算中最高位有进位或借位时,中最高位有进位或借位时,CF=1CF=1,否则,否则CF=0CF=0。 例:例:25H+6EH=93H 25H+6EH=93H 没有进位,则没有进位,则CF=0CF=0D7H+5CH=(1)33H D7H+5CH=(1)33H 有进位,则有进位,则CF=1CF=1 PFPF(Parity FlagParity Flag),),奇偶校验标志位奇偶校验标志位。本次

26、运。本次运算结果的低算结果的低8 8位中位中1 1的个数为偶数时,的个数为偶数时,PF=1PF=1,否则,否则PF=0PF=0。 AFAF(Auxiliary Carry FlagAuxiliary Carry Flag),),辅助进位标志辅助进位标志位位。本次运算结果低。本次运算结果低4 4位向高位向高4 4位有进位或借位位有进位或借位时,时,AF=1AF=1,否则,否则AF=0AF=0。通常用于对。通常用于对BCDBCD算术运算算术运算结果的调整。结果的调整。 标志位标志位标志位标志位 ZFZF(Zero FlagZero Flag),),零标志位零标志位。若运算结果为。若运算结果为0 0

27、时,时,ZF=1ZF=1,否则,否则,ZF=0ZF=0。 SFSF(Sign FlagSign Flag),),符号标志位符号标志位。当运算结果。当运算结果的最高位为的最高位为1 1,则,则SF=1SF=1,否则,否则SF=0SF=0,即与运算结,即与运算结果的最高位相同。果的最高位相同。 OFOF(Overflow FlagOverflow Flag),),溢出标志位溢出标志位。溢出的判断方法如下:溢出的判断方法如下: 加法运算:加法运算:若两个加数的最高位为若两个加数的最高位为0 0,而和的最高位为,而和的最高位为1 1,则产生上溢出;,则产生上溢出;若两个加数的最高位为若两个加数的最高位

28、为1 1,而和的最高位为,而和的最高位为0 0,则产生下溢出;,则产生下溢出;当两个加数的最高位不相同时,不可能产生溢出。当两个加数的最高位不相同时,不可能产生溢出。减法运算:减法运算:若被减数的最高位为若被减数的最高位为0 0,减数的最高位为,减数的最高位为1 1,而差的最高位为,而差的最高位为1 1,则产生上溢出;则产生上溢出;若被减数的最高位为若被减数的最高位为1 1,减数的最高位为,减数的最高位为0 0,而差的最高位为,而差的最高位为0 0,则产生下溢出;则产生下溢出;被减数及减数的最高位相同时,不可能产生溢出。被减数及减数的最高位相同时,不可能产生溢出。 标志位标志位 溢出溢出是指补

29、码运算的结果超出了所选是指补码运算的结果超出了所选字长能表示数的范围。例如,字长能表示数的范围。例如,8 8位补码位补码所所能表示数的范围是能表示数的范围是-128-128+127+127,1616位补码位补码所能表示数的范围是所能表示数的范围是-32768-32768+32767+32767。如。如果运算结果超出这个范围,就产生了溢出。果运算结果超出这个范围,就产生了溢出。什么是溢出什么是溢出例例【2-22-2】 请指出执行了下列加法操作后请指出执行了下列加法操作后各标志位的状态。各标志位的状态。 1010 0100 0011 10011010 0100 0011 1001 + 0100 0

30、101 0110 1010 + 0100 0101 0110 1010 1110 1001 1010 0011 1110 1001 1010 0011执行以上操作后,各执行以上操作后,各状态标志位状态标志位的状态应为:的状态应为:CF= CF= AF= AF= PF= PF= ZF= ZF= SF= SF= OF= OF= 0 01 11 10 01 10 0标志位标志位 TFTF(Trap FlagTrap Flag),),陷井标志位陷井标志位,也常称为单步,也常称为单步标志位。调试程序时,设置标志位。调试程序时,设置TF=1TF=1时,时,8086 CPU8086 CPU每每执行完一条指令

31、就自动产生一个内部中断。执行完一条指令就自动产生一个内部中断。 IFIF(Interrupt FlagInterrupt Flag),),中断允许标志位中断允许标志位。该。该标志用于控制外部可屏蔽中断是否可以被标志用于控制外部可屏蔽中断是否可以被8086 8086 CPUCPU响应。响应。IF=1IF=1,允许,允许CPUCPU响应可屏蔽中断请求;响应可屏蔽中断请求;IF=0IF=0,则禁止,则禁止CPUCPU接收外部可屏蔽中断请求。接收外部可屏蔽中断请求。 DFDF(Direction FlagDirection Flag),),方向标志位方向标志位。用于控。用于控制串操作指令中地址指针的变

32、化方向。如果设置制串操作指令中地址指针的变化方向。如果设置DF=0DF=0,每次串操作后的存储器地址就自动增加,每次串操作后的存储器地址就自动增加,若若DF=1DF=1,每次串操作后的存储器地址就自动减少。,每次串操作后的存储器地址就自动减少。标志位名标志位名置位符号(置位符号(=1)复位符号(复位符号(=0)溢出标志溢出标志OFOVNV方向标志方向标志DFDNUP中断标志中断标志IFEIDI符号标志符号标志SFNGPL零标志零标志ZFZRNZ辅助标志辅助标志AFACNA奇偶标志奇偶标志PFPEPO进位标志进位标志CFCYNC表表2-1 Flags2-1 Flags中标志位的符号表示中标志位的

33、符号表示 在调试程序在调试程序DEBUGDEBUG中,提供了测试标志位的表示中,提供了测试标志位的表示方法,它用符号来表示标志位的值,表方法,它用符号来表示标志位的值,表2-12-1给出了各给出了各个标志位在个标志位在DEBUGDEBUG中的符号表示(中的符号表示(TFTF在在DEBUGDEBUG中不提供中不提供符号)。符号)。 2.2.2 322.2.2 32位微处理器的编程结构位微处理器的编程结构 图图2-52-5给出了给出了3232位微处理器的寄存器模型,它位微处理器的寄存器模型,它实际上是一个呈现在编程人员面前的寄存器集合,实际上是一个呈现在编程人员面前的寄存器集合,称之为称之为323

34、2位微处理器的编程结构位微处理器的编程结构。 它描述了它描述了8038680386、8048680486及及PentiumPentium系列微处理器系列微处理器内部程序可见的寄存器结构。兼容内部程序可见的寄存器结构。兼容8086 CPU8086 CPU原来的原来的8 8个个1616位通用寄存器以及原来的位通用寄存器以及原来的8 8个个8 8位的寄存器,位的寄存器,而且将原来的而且将原来的8 8个个1616位通用寄存器均扩展成位通用寄存器均扩展成(ExtendedExtended)3232位的寄存器位的寄存器。 增加了增加了2 2个个1616位的数据段寄存器位的数据段寄存器FSFS和和GSGS。

35、 图图2-5 322-5 32位位CPUCPU内部寄存器内部寄存器 SPBPDISIDLDHCLCHBLBHALAHESPESPEBEBP PEDIEDIESIESIEAXEAXECXECXEDXEDXEBXEBX8 8 1515161631310 07 7GSFSSSESDSCS0 015151.1.通用寄存器通用寄存器 共有共有8 8个个3232位通用寄存器位通用寄存器,EAXEAX、EBXEBX、ECXECX、EDXEDX、ESPESP、EBPEBP、ESIESI和和EDIEDI,虽然它们都,虽然它们都可以用于存放一般的数据,但是,不同的寄存可以用于存放一般的数据,但是,不同的寄存器还可

36、能有特殊的用法,按照它们的功能差别,器还可能有特殊的用法,按照它们的功能差别,可以分为可以分为2 2组:组: 通用数据寄存器通用数据寄存器; 指令指针与变址寄存器指令指针与变址寄存器。 (1 1)通用数据寄存器)通用数据寄存器 共计有共计有四四个个3232位位的的通用数据寄存器通用数据寄存器:EAXEAX、EBXEBX、ECXECX和和EDXEDX。通用数据寄存器一般用来存放。通用数据寄存器一般用来存放8 8位位、1616位位或或3232位位的操作数。的操作数。 EAXEAX(AccumulatorAccumulator),累加器:),累加器:EAXEAX可以作为可以作为通用通用8 8位寄存器

37、(位寄存器(AHAH和和ALAL)、)、1616位寄存器(位寄存器(AXAX)及)及3232位寄存器(位寄存器(EAXEAX)使用。如果作为通用)使用。如果作为通用8 8位或位或1616位位寄存器使用时,则只改变寄存器使用时,则只改变EAXEAX中低中低1616位中相应的数位中相应的数据,其他位不会改变。当据,其他位不会改变。当CPUCPU执行乘法指令、除法执行乘法指令、除法指令及调整指令时,指令及调整指令时,EAXEAX有其固定的特殊用法。有其固定的特殊用法。 EBXEBX(BaseBase),基址寄存器:),基址寄存器:EBXEBX可以作为通用可以作为通用8 8位寄存器(位寄存器(BHBH

38、和和BLBL)、)、1616位寄存器(位寄存器(BXBX)及)及3232位寄位寄存器(存器(EBXEBX)使用。如果作为通用)使用。如果作为通用8 8位或位或1616位寄存器位寄存器使用时,则只改变使用时,则只改变EBXEBX中低中低1616位中相应的数据,其他位中相应的数据,其他位不会改变。位不会改变。 ECXECX(CountCount),计数寄存器:),计数寄存器:ECXECX可以作为通用可以作为通用8 8位寄存器(位寄存器(CHCH和和CLCL)、)、1616位寄存器(位寄存器(CXCX)及)及3232位寄位寄存器(存器(ECXECX)使用。如果作为通用)使用。如果作为通用8 8位或位

39、或1616位寄存器位寄存器使用时,则只改变使用时,则只改变ECXECX中低中低1616位中相应的数据,其他位中相应的数据,其他位不会改变。位不会改变。ECXECX有用于计数的固定用法,移位和循有用于计数的固定用法,移位和循环指令一般用环指令一般用CLCL寄存器计数,重复的串操作指令一寄存器计数,重复的串操作指令一般用般用CXCX计数,计数,LOOP/LOOPDLOOP/LOOPD等指令用等指令用CXCX或或ECXECX计数。计数。 EDXEDX(DataData),数据寄存器:),数据寄存器:EDXEDX作为通用寄存作为通用寄存器,与上述器,与上述3 3个寄存器的使用方法相同。但是,个寄存器的

40、使用方法相同。但是,CPUCPU执行乘法指令时,执行乘法指令时,EDXEDX固定用来存放部分乘积,固定用来存放部分乘积,CPUCPU执行除法指令时,执行除法指令时,EDXEDX固定用来存放被除数及余数等。固定用来存放被除数及余数等。 (2 2)指针及变址寄存器)指针及变址寄存器 四四个个3232位位的的通用寄存器通用寄存器(ESPESP、EBPEBP、ESIESI、EDIEDI)都可以用作一般的)都可以用作一般的3232位数据寄存器。也位数据寄存器。也可以用作一般的可以用作一般的1616位数据寄存器(位数据寄存器(SPSP、BPBP、SISI、DIDI),作一般的),作一般的1616位数据寄存

41、器使用时,则与位数据寄存器使用时,则与8086 CPU8086 CPU中的中的SPSP、BPBP、SISI、DIDI兼容。兼容。 另外,每个寄存器都有各自的专用场合。另外,每个寄存器都有各自的专用场合。 ESPESP:3232位的堆栈指针,以位的堆栈指针,以ESPESP为偏移地址,访问为偏移地址,访问的是堆栈存储空间,一般用它来指向堆栈的栈底或栈的是堆栈存储空间,一般用它来指向堆栈的栈底或栈顶。顶。 EBPEBP:3232位的基址指针,或称为基址寄存器。以位的基址指针,或称为基址寄存器。以EBPEBP为偏移地址,默认访问的是堆栈存储空间,一般为偏移地址,默认访问的是堆栈存储空间,一般用它来存放

42、偏移地址,以便访问堆栈区。用它来存放偏移地址,以便访问堆栈区。 ESIESI:3232位的源变址寄存器,位的源变址寄存器,ESIESI(或(或1616位的位的SISI)用于寻址串操作指令的源数据串。用于寻址串操作指令的源数据串。 EDIEDI:3232位的目的变址寄存器,位的目的变址寄存器,EDIEDI(或(或1616位的位的DIDI)用于寻址串操作指令的目的数据串。用于寻址串操作指令的目的数据串。 2.2.指令指针指令指针 扩展的指令指针扩展的指令指针EIPEIP(Extended(Extended Instruction Instruction Pointer)Pointer)是一个是一个

43、3232位位的专用寄存器,专用于寻址当的专用寄存器,专用于寻址当前需要取出的指令码。当前需要取出的指令码。当CPUCPU从代码段取出一字节从代码段取出一字节指令后,指令后,EIPEIP就自动加就自动加1 1,指向下一字节的指令码。,指向下一字节的指令码。 当当8038680386及以上的及以上的3232位微处理器工作在保护模位微处理器工作在保护模式下时,式下时, EIPEIP的的3232位都有效;当工作在实模式下时,位都有效;当工作在实模式下时,3232位的位的EIPEIP仅低仅低1616位(位(IPIP)有效,与)有效,与80868086兼容。兼容。 图图2-6 80X862-6 80X86

44、及及PentiumPentium系列微处理器的标志寄存器系列微处理器的标志寄存器 31 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 031 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ID VIP VIF AC VM RF NT IOPL OF DF IF TF SF ZF AF PF CF ID VIP VIF AC VM RF NT IOPL OF DF IF TF SF ZF AF PF CFPentium/ Pentium Pentium/ Pentium

45、 8086/80888086/8088802868028680386DX80386DX80486SX/80486DX80486SX/80486DX 3232位位的的标志寄存器标志寄存器(EFLAGSEFLAGS)用于指示微处理)用于指示微处理器进行算术和逻辑运算后的状态以及控制微处理器器进行算术和逻辑运算后的状态以及控制微处理器的有关操作。图的有关操作。图2-62-6展示了展示了80X8680X86及及PentiumPentium系列微系列微处理器标志寄存器的各位定义情况。处理器标志寄存器的各位定义情况。 3.3.标志寄存器标志寄存器 EFLAGSEFLAGS在在8086 168086 16位

46、位FLAGSFLAGS基础上扩充了高基础上扩充了高1616位,位,其中,其中,FLAGS b11FLAGS b11b0b0中保留了中保留了8086 CPU8086 CPU中中6 6个状态标个状态标志和志和3 3个控制标志,增加了个控制标志,增加了NTNT与与IOPLIOPL,高,高1616位中新增位中新增了了6 6个标志位,这些扩充标志位的含义如下:个标志位,这些扩充标志位的含义如下: (1 1)NTNT,嵌套任务标志嵌套任务标志。 当该位被置成当该位被置成1 1时,表示当前所执行的任务正嵌时,表示当前所执行的任务正嵌套在另一任务中,该位的置套在另一任务中,该位的置1 1与清零都是通过任务的与

47、清零都是通过任务的控制转移来实现的,显然,控制转移来实现的,显然,NTNT用于保护模式。用于保护模式。 (2 2)IOPLIOPL,I/OI/O特权级别特权级别。 用来表示用来表示I/OI/O操作处于操作处于0 0 3 3级特权中的哪一级,级特权中的哪一级,0 0级最高,级最高,3 3级最低,它是用于指明在保护模式下不产级最低,它是用于指明在保护模式下不产生异常中断生异常中断1313而执行而执行I/OI/O指令时,要求当前特权级指令时,要求当前特权级CPLCPL的允许值。的允许值。 (3 3)RFRF(Resume FlagResume Flag),),恢复标志恢复标志。 它是一个与单步、断点

48、调试一起使用的标志。它是一个与单步、断点调试一起使用的标志。该位置该位置1 1时,即使遇到断点或调试故障,也不产生异时,即使遇到断点或调试故障,也不产生异常中断常中断1 1,即单步中断。成功地执行完一条指令后,即单步中断。成功地执行完一条指令后,该位会自动清零。该位会自动清零。 (4 4)VMVM(Virtual 8086 ModeVirtual 8086 Mode),),虚拟虚拟8686方式标方式标志位志位。 在保护模式下,若在保护模式下,若VMVM置置1 1,CPUCPU则转移到虚拟则转移到虚拟80868086模式,在此模式下,模式,在此模式下,CPUCPU像一个高速的像一个高速的8086

49、 CPU8086 CPU运行运行80868086的指令,一旦返回保护模式后,此位清零。的指令,一旦返回保护模式后,此位清零。 (5 5)ACAC,对准检查标志位对准检查标志位。 ACAC标志仅对特权级标志仅对特权级3 3的程序即用户程序有效,的程序即用户程序有效,若若AC=1AC=1,且系统级控制寄存器中,且系统级控制寄存器中AMAM位也为位也为1 1状态时,状态时,才允许对特权级才允许对特权级3 3的程序进行数据的对准检查。若的程序进行数据的对准检查。若AC=0AC=0,则不允许对准检查。,则不允许对准检查。 对准数据的标准是:对准数据的标准是:CPUCPU访问字数据(访问字数据(1616位

50、)位)时地址应该为偶数,访问双字数据(时地址应该为偶数,访问双字数据(3232位)时地址位)时地址应该为应该为4 4的倍数,访问的倍数,访问4 4字数据(字数据(6464位)时地址应该位)时地址应该为为8 8的倍数。一旦的倍数。一旦CPUCPU进行未对准地址访问内存时,进行未对准地址访问内存时,将产生异常中断将产生异常中断1717。 (6 6)VIFVIF,虚拟中断标志位虚拟中断标志位。 在虚拟在虚拟8686方式下,方式下,VIFVIF是中断标志是中断标志IFIF的拷贝。的拷贝。 (7 7)VIPVIP,虚拟中断位虚拟中断位。 虚拟中断位指示是否有挂起的中断,当虚拟中断位指示是否有挂起的中断,

51、当VIP=1VIP=1时,表示有一个中断正等待响应与处理。时,表示有一个中断正等待响应与处理。VIPVIP与与VIFVIF都起到控制虚拟中断的作用。都起到控制虚拟中断的作用。 (8 8) IDID,识别标志位识别标志位。 如果该标志位能被置位和清零,则指明这个如果该标志位能被置位和清零,则指明这个处理器能支持处理器能支持CPUIDCPUID指令。指令。CPUIDCPUID指令可以提供该指令可以提供该处理器的厂商、系列以及模式等信息。处理器的厂商、系列以及模式等信息。 4.64.6个个1616位的段寄存器位的段寄存器 32 32位微处理器包含位微处理器包含6 6个个1616位位的的段寄存器段寄存

52、器: 8086 CPU8086 CPU的的4 4个段寄存器:个段寄存器:代码段寄存器代码段寄存器CSCS、数据段寄存器数据段寄存器DSDS、附加数据段寄存器附加数据段寄存器ESES、堆栈段寄堆栈段寄存器存器SSSS。在实模式下,这四个段寄存器的使用与。在实模式下,这四个段寄存器的使用与8086 CPU8086 CPU兼容。兼容。 在保护模式下,它们作为段描述符,经过段页在保护模式下,它们作为段描述符,经过段页式变换后才能产生物理地址。式变换后才能产生物理地址。 3232位微处理器新增加位微处理器新增加2 2个个1616位的位的数据段数据段寄存器:寄存器:FSFS和和GSGS。 2.3 2.3

53、实模式下的存储器寻址实模式下的存储器寻址 2.3.1 2.3.1 实模式下的存储器地址空间的划分实模式下的存储器地址空间的划分 在实模式下,在实模式下,CPUCPU可以寻址的存储空间是可以寻址的存储空间是2 22020=1MB=1MB,即地址范围是即地址范围是00000H00000HFFFFFHFFFFFH,其中,从,其中,从00000H00000H003FFH003FFH是中断向量表区,共计有是中断向量表区,共计有10241024字节,用于存放字节,用于存放256256个个中断向量中断向量,中断向量是指中断服务程序的起始地,中断向量是指中断服务程序的起始地址,是采用逻辑地址表示法表示的,即每

54、个中断向量址,是采用逻辑地址表示法表示的,即每个中断向量包含包含4 4个字节:个字节:2 2个字节的代码段值,个字节的代码段值,2 2个字节的偏移地个字节的偏移地址,这与址,这与MS-DOSMS-DOS下下8086 CPU8086 CPU系统的完全相同。实模式系统的完全相同。实模式下下1MB1MB存储器地址空间如图存储器地址空间如图2-72-7所示。所示。图图2-7 2-7 实模式下实模式下1MB1MB存储器地址空间存储器地址空间 00000H00000H003FFH003FFH00400H00400HFFFEFHFFFEFHFFFF0HFFFF0HFFFFFHFFFFFH初始化代码区初始化代

55、码区 通用区通用区 中断向量表区中断向量表区2.3.2 2.3.2 实模式下存储器的分段管理技术实模式下存储器的分段管理技术 CPU CPU访问存储器单元是以字节为单位进行的,每个访问存储器单元是以字节为单位进行的,每个存储器单元有唯一的地址。实模式下可直接寻址存储器单元有唯一的地址。实模式下可直接寻址4GB4GB内内存中仅存中仅1MB1MB的存储空间,地址范围是的存储空间,地址范围是00000H00000HFFFFFHFFFFFH。 在实模式下,存储器寻址所采用的指令,都只允在实模式下,存储器寻址所采用的指令,都只允许使用许使用1616位寄存器或位寄存器或1616位的直接地址作为偏移地址,位

56、的直接地址作为偏移地址,这称为这称为1616位段,与位段,与80868086系统相同,仍然采用了存储器系统相同,仍然采用了存储器的分段管理技术,把存储器分成四种类型的段,把的分段管理技术,把存储器分成四种类型的段,把1616位位段寄存器的值乘以段寄存器的值乘以1616,获得,获得2020位的段首地址。位的段首地址。 段寄存器的值就是段首地址的高段寄存器的值就是段首地址的高1616位,称其为位,称其为“段基地址段基地址”(Segment Base ValueSegment Base Value)。 8086/80186/80286 CPU 8086/80186/80286 CPU设置了设置了4

57、4个个1616位的段寄存位的段寄存器:器: 代码段代码段CSCS、数据段、数据段DSDS、堆栈段、堆栈段SSSS和附加段和附加段ESES。 由操作系统根据当前的应用程序,可以定位当前由操作系统根据当前的应用程序,可以定位当前的代码段(值)、当前的数据段(值)、当前的堆栈的代码段(值)、当前的数据段(值)、当前的堆栈段(值)和当前的附加段(值);段(值)和当前的附加段(值); 将当前代码段的基地址存放在将当前代码段的基地址存放在CSCS中,当前数据段中,当前数据段的基地址存放在的基地址存放在DSDS中,当前堆栈段的基地址存放在中,当前堆栈段的基地址存放在SSSS中,当前附加数据段的基地址存放在中

58、,当前附加数据段的基地址存放在ESES中。中。 系统的整个存储空间可分成系统的整个存储空间可分成1616个互不重叠的个互不重叠的逻辑段,如图逻辑段,如图2-82-8(a a)所示。)所示。 图图2-8 2-8 存储器分段逻辑结构存储器分段逻辑结构 0 0 段段1 1 段段2 2 段段15 15 段段00000H00000H0FFFFH0FFFFH1FFFFH1FFFFH20000H20000H2FFFFH2FFFFHF0000HF0000HFFFFFHFFFFFH10000H10000H64KB64KB64KB64KB1616个逻辑段个逻辑段64KB64KB64KB64KB(a)(a) 1.1

59、.存储器每个段的最大容量为存储器每个段的最大容量为64KB64KB,根据各个不,根据各个不同的程序,操作系统安排大小不同的各类存储段。同的程序,操作系统安排大小不同的各类存储段。 2.2.允许各逻辑段在整个存储空间中浮动,即段与允许各逻辑段在整个存储空间中浮动,即段与段之间可以部分重叠、完全重叠、连接排列,也可以段之间可以部分重叠、完全重叠、连接排列,也可以是分开的,如图是分开的,如图2-82-8(b b)所示。)所示。 图图2-8 2-8 存储器分段逻辑结构存储器分段逻辑结构 00000H00000H逻辑段逻辑段1 1起点起点FFFFFHFFFFFH逻辑段逻辑段2 2起点起点逻辑段逻辑段3

60、3起点起点逻辑段逻辑段4 4、5 5起点起点(b)(b)逻辑段逻辑段164KB164KB逻辑段逻辑段264KB264KB逻辑段逻辑段364KB364KB逻辑段逻辑段4 4、564KB564KB3.3.逻辑段逻辑段1 1和逻辑段和逻辑段2 2是分开的,逻辑段是分开的,逻辑段2 2和逻辑段和逻辑段3 3是连接排列的,逻辑段是连接排列的,逻辑段4 4和逻辑段和逻辑段5 5是完全重叠的。是完全重叠的。2.3.3 2.3.3 实模式下存储器的寻址实模式下存储器的寻址 1.1.实模式下物理地址的产生实模式下物理地址的产生 (1 1)物理地址物理地址 从从8088/80868088/8086开始,开始,CP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论