1、第二章第二章 微处理器和指令系统微处理器和指令系统2.1.12.1.1 8086/8088 8086/8088 微处理器微处理器2.1.2 2.1.2 80486 80486 微处理器微处理器2.1.3 2.1.3 Pentium Pentium 微处理器微处理器(80586)(80586)2.1.4 2.1.4 Pentium Pro Pentium Pro 微处理器微处理器2.1.5 2.1.5 Pentium Pentium 微处理器微处理器2.1.6 2.1.6 Pentium Pentium 微处理器微处理器2.1.7 2.1.7 Pentium 4 Pentium 4 微处理器微处
2、理器2.1 2.1 IntelIntel系列微处理器概述系列微处理器概述2.1.1 2.1.1 8086/8088 8086/8088 微处理器微处理器 8086 8086是是19781978年推出的全年推出的全1616位微处理器位微处理器,8088,8088是是19781978年推出年推出的准的准1616位微处理器。二者除外数据总线位数(位微处理器。二者除外数据总线位数(80868086为为1616位,位,80888088为为8 8位)及与此相关的部分逻辑稍有差别外位)及与此相关的部分逻辑稍有差别外,内部结构内部结构和基本性能相同和基本性能相同,指令系统完全兼容。指令系统完全兼容。在在808
3、6/80888086/8088的设计中,引入了两个重要的结构概念:的设计中,引入了两个重要的结构概念:指令流水线指令流水线 存储器分段存储器分段 这两个概念在以后升级的这两个概念在以后升级的IntelIntel系列微处理器中一直被沿用和发展。系列微处理器中一直被沿用和发展。正是这两个概念的引入,使正是这两个概念的引入,使8086/80888086/8088比原来的比原来的8 8位位MPUMPU在运行速度、在运行速度、处理能力和对存储空间的访问等性能方面有很大提高。处理能力和对存储空间的访问等性能方面有很大提高。2.2.1 8086/80881 8086/8088微处理器微处理器内部结构内部结构
4、指令流水线指令流水线存储器分段存储器分段 8086 8086是全是全1616位微处理器,位微处理器,80888088是准是准1616位微处理器。二位微处理器。二者除了外数据总线位数及与此相关的部分逻辑稍有差别外,者除了外数据总线位数及与此相关的部分逻辑稍有差别外,内部结构和基本性能相同,指令系统完全兼容。内部结构和基本性能相同,指令系统完全兼容。1.1.内部结构内部结构2.2.1.1 8086/80881.1 8086/8088微处理器微处理器2020位位 ABABEUEU控制电路控制电路总线总线控制电路控制电路通用寄存器通用寄存器累加器累加器基址寄存器基址寄存器计数寄存器计数寄存器数据寄存器
5、数据寄存器堆栈指针堆栈指针基址指针基址指针目的变址目的变址源变址源变址指针寄存器指针寄存器变址寄存器变址寄存器地址加法器地址加法器运算暂存器运算暂存器ALUALU标志寄存器标志寄存器指令指针指令指针内部暂存器内部暂存器指令队列指令队列总线接口单元总线接口单元(BIU)BIU)执行单元执行单元(EU)EU)外部总线外部总线8086/80888086/8088DBDB8088:88088:8位位8086:168086:16位位CSCSDSDSSSSSESESIPIP1 2 3 4 5 61 2 3 4 5 68 8位位8088808880868086AX AH ALAX AH ALBX BH BL
6、BX BH BLCX CH CLCX CH CLDX DH DL DX DH DL SPSPBPBPDIDISISIALU DBALU DB1616位位 8086 CPU 8086 CPU内部指令执行流程内部指令执行流程1.1.段寄存器段寄存器CS CS 程序指针寄存器程序指针寄存器IP IP 内容经过地址加法器形成内容经过地址加法器形成20 20 位地址;位地址;2.2.由由CPUCPU内部地址总线内部地址总线AB AB,经过总线地址控制电路,经过总线地址控制电路,向外部向外部总线发读取指令的的控制信号,总线发读取指令的的控制信号,外部总线开始总线操作;外部总线开始总线操作;3.3.读取指令
7、送入到指令队列中,读取指令送入到指令队列中,等待执行;等待执行;4.4.EUEU单元从队列中去一条指令到单元从队列中去一条指令到EUEU控制电路,译码指令需要控制电路,译码指令需要做的系列操作,包括寄存器的内容送累加器;做的系列操作,包括寄存器的内容送累加器;5.5.操作结果经过内部数据总线,操作结果经过内部数据总线,存放到寄存器或内部暂存器,存放到寄存器或内部暂存器,同时置同时置FRFR;6.6.根据根据DSDS寄存器的内容,及指令寻址方式产生的偏移量,经寄存器的内容,及指令寻址方式产生的偏移量,经过地址加法器,形成数据保存地址,并送到外部总线。过地址加法器,形成数据保存地址,并送到外部总线
8、。CPU CPU 发写总线操作命令,将暂存器的内容,发写总线操作命令,将暂存器的内容,通过总线,通过总线,写到指写到指定内存单元。定内存单元。2.2.指令流水线指令流水线 指令队列的存在使指令队列的存在使EUEU和和BIUBIU并行工作并行工作,取指令和分析、取指令和分析、执行指令操作可重叠进行,形成了两级指令流水线结构,执行指令操作可重叠进行,形成了两级指令流水线结构,减少了减少了CPUCPU等待时间,提高了等待时间,提高了CPUCPU的利用率,加快了整机的利用率,加快了整机运行速度,降低了对存储器存取速度的要求。运行速度,降低了对存储器存取速度的要求。BIUBIUEUEU 8086/808
9、8 8086/8088的指令的指令“流水流水”操作操作取指令取指令1 1取指令取指令2 2译码译码1 1取数据取数据1 1执行执行1 1取指令取指令3 3译码译码2 2存结果存结果1 1执行执行2 2取指令取指令4 4译码译码3 3取指令取指令5 5等待等待3.3.存储器分段存储器分段8086物理地址(1M=220)将将1 1MBMB的物理存储空的物理存储空间分成若干个逻辑段间分成若干个逻辑段,每每段大小为段大小为6464KBKB。64KB30000H(段基址段基址)段的起始单元地址段的起始单元地址叫叫段基址段基址,存放在段寄,存放在段寄存器中。通过存器中。通过4 4个段寄个段寄存器,存器,C
10、PUCPU每次可同时每次可同时对对4 4个段进行寻址。个段进行寻址。内存内存 00000H00001H00002H00003HFFFFFH 分段方式不分段方式不唯一,各段之间唯一,各段之间可以连续、分离、可以连续、分离、部分重叠或完全部分重叠或完全重叠,这主要取重叠,这主要取决于对各个段寄决于对各个段寄存器的预置内容。存器的预置内容。1000H2000H3100H3100H代码段代码段(64KB)堆栈段堆栈段(64KB)数据段与数据段与附加数据附加数据段重叠段重叠(64KB)CS10000H20000H31000HSSDSES1FFFFH2FFFFH40FFFH 存储器分段结构示例存储器分段结
11、构示例 物理地址物理地址是是1 1MBMB存储存储空间中的某一单元地址,空间中的某一单元地址,用用2020位地址码表示位地址码表示,CPUCPU访问存储器时,地址总访问存储器时,地址总线上送出的就是物理地线上送出的就是物理地址。址。逻辑地址逻辑地址在编程时在编程时采用,由段基址和偏移采用,由段基址和偏移地址组成,两者均为地址组成,两者均为1616位。位。内存内存20000H20A00H0A00H物理地址物理地址20A00H逻辑地址逻辑地址2000 物理地址和逻辑地址物理地址和逻辑地址逻辑地址与逻辑地址与2020位物理地址的变换关系:位物理地址的变换关系:物理地址物理地址=段基址段基址16+16
12、+偏移地址偏移地址偏移地址偏移地址段基址段基址段基址段基址 000000002020位物理地址位物理地址逻辑地址逻辑地址15 0 15 015 0 15 0 左移四位左移四位19 019 0地址地址加法器加法器 逻辑逻辑地址与物理地址的变换地址与物理地址的变换【例】若数据段寄存器DS2100H,试确定该存储区段物理地址的范围。一个逻辑段的最大容量为64KB;第一个存储单元的偏移地址为0;最后一个存储单元的偏移地址为FFFFH。该数据区段由低至高相应存储单元的偏移地址为:0000H FFFFH。存储区的首地址 DS16偏移地址 2100H160000H21000H存储区的末地址DS16偏移地址
13、2100H16FFFFH 30FFFH 2.2.2 Pentium2 Pentium微处理器微处理器2.2.2.1 2.1 内部结构内部结构与与外部引脚外部引脚2.2.2.2 2.2 内部寄存器内部寄存器2.2.2.3 2.3 PentiumPentium的四种工作方式的四种工作方式 PentiumPentium在结构上由如下功能部件组成:在结构上由如下功能部件组成:整数执行单元整数执行单元 浮点单元浮点单元 指令指令CacheCache和数据和数据CacheCache 指令预取单元指令预取单元 指令译码单元指令译码单元 地址转换与管理单元地址转换与管理单元 总线接口单元总线接口单元 控制单元
14、控制单元 这些功能部件除地址转换与管理单元与这些功能部件除地址转换与管理单元与80386/8048680386/80486保持兼容外,其他都进行了重新设计。保持兼容外,其他都进行了重新设计。2.2.2.1 2.1 内部结构和外部引脚内部结构和外部引脚1.内部结构内部结构地址地址转换转换与与存储存储管理管理单元单元APICDP逻辑逻辑控制控制ROM浮点单元浮点单元8KB指令指令高速缓存高速缓存TLB预取预取地址地址指令预取单元指令预取单元指令译码单元指令译码单元总线总线单元单元8KB数据数据高速缓存高速缓存TLB控制单元控制单元地址生成地址生成U流水线流水线地址生成地址生成V流水线流水线整数寄存
15、器组整数寄存器组ALUU流水线流水线ALUV流水线流水线控制控制寄存器组寄存器组加法加法除法除法乘法乘法桶形移位器桶形移位器控制控制指令指令指针指针分支检验分支检验与目标地址与目标地址32位位地址地址总线总线323232326464位数位数据总线据总线数据数据控制控制控制控制64位位数据数据总线总线32位地位地址总线址总线分支目标分支目标缓冲器缓冲器3232328080基本寄存器基本寄存器系统级寄存器系统级寄存器调试和调试和模型专用模型专用寄存器寄存器 浮点寄存器浮点寄存器PentiumPentium的内部寄存器,按功能可分为的内部寄存器,按功能可分为4 4类:类:2.2.2.2 Pentiu
16、m2.2 Pentium内部寄存器内部寄存器标志寄存器标志寄存器指令指针寄存器指令指针寄存器EFLAGSEFLAGSFLAGSFLAGSEIPEIPIPIP31 15 031 15 031 15 031 15 031 16 15 7 031 16 15 7 0通通 用用 寄寄 存存 器器EAX EAX AH AH AX AX ALALEBX EBX BH BH BX BX BLBLECX ECX CHCH CX CX CLCLEDX EDX DHDH DX DX DLDLEDI DIEDI DIESI SIESI SIEBP BPEBP BPESP SPESP SP1.1.基本寄存器基本寄存器
17、选择器选择器CSCSSSSSDSDSESESFSFSGSGS15 0 63 015 0 63 0描述符高速缓存器描述符高速缓存器段段 寄寄 存存 器器 EIP EIP用于保存下一条待用于保存下一条待预取指令相对于代码基址预取指令相对于代码基址的偏移量。它的低的偏移量。它的低1616位也位也可单独访问,称之为可单独访问,称之为IPIP。标志寄存器位定义标志寄存器位定义C CF FEFLAGSEFLAGSFLAGSFLAGS31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 031
18、30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0A AC CV VMMR RF F0 0N NT TIOPLIOPLO OF FD DF FIFIFT TF FS SF FZ ZF F0 0A AF F0 0P P F F0 0X X 对准检查标志对准检查标志X X 虚拟虚拟8686模式标志模式标志X X 恢复标志恢复标志X X 嵌套标志嵌套标志X X 特权级标志特权级标志S S 溢出标志溢出标志C C 方向标志方向标志X X 中断允许标志中断允许标志X X 自陷标志自陷标志S
19、S 符号标志符号标志S S 零标志零标志S S 辅助进位标志辅助进位标志S S 奇偶标志奇偶标志S S 进位标志进位标志注注:S S表示状态标志表示状态标志,X X表示系统标志表示系统标志,C C表示控制标志表示控制标志X X 虚拟中断标志虚拟中断标志X IDX ID标志标志X X 虚拟中断挂起虚拟中断挂起0 0 0 0 0 0 0 0 0 0V VIFIFV VIPIPI ID D选择器选择器描述符高速缓存器描述符高速缓存器CSSSDSESFSGS15 0 63 015 0 63 0段段寄寄存存器器 段寄存器段寄存器PentiumPentium有有6 6个段寄存器:个段寄存器:CS-CS-指
20、明当前的代码段指明当前的代码段SS-SS-指明当前的堆栈段指明当前的堆栈段DSDSESESFS FS GSGS决定程序使用决定程序使用存储器区域块存储器区域块指明当前的指明当前的4 4个数据段个数据段编程者可直编程者可直接访问的接访问的编程者不能编程者不能访问的访问的段选择符段选择符段描述符段描述符1.1.实地址方式和虚拟实地址方式和虚拟80868086方式下相同,段的长度固方式下相同,段的长度固定为定为6464KB,KB,段选择器就是段寄存器段选择器就是段寄存器,它保存的是逻它保存的是逻辑段基址的高辑段基址的高1616位,将它的内容左移位,将它的内容左移4 4位即可得到位即可得到实际段基址,
21、实际段基址,而不必使用描述符高速缓存器。而不必使用描述符高速缓存器。2.2.在保护虚地址方式下,在保护虚地址方式下,段的长度可以在段的长度可以在1 1字节到字节到4 4G G字节之间变化字节之间变化;为了描述每个段的基址、属性;为了描述每个段的基址、属性和边界,为每个段定义了一个和边界,为每个段定义了一个描述符描述符。操作系统。操作系统使用的各任务公用的段描述符放在一起构成使用的各任务公用的段描述符放在一起构成全局全局描述符表描述符表GDTGDT;某个任务专用的段描述符放在一某个任务专用的段描述符放在一起构成起构成局部描述符表局部描述符表LDTLDT。PentiumPentium段的定义与段的
22、定义与80868086有所不同:有所不同:段的选择符段的选择符 为了说明一个段的描述符在哪个表中,表的序号是为了说明一个段的描述符在哪个表中,表的序号是多少以及特权的高低,为每个段定义了一个多少以及特权的高低,为每个段定义了一个1616位的选择位的选择符,符,存于段选择器中,存于段选择器中,其格式为:其格式为:描述符索引描述符索引段描述符段描述符iLDTGDT0 1INDEX TI RPLb15 b3 b2 b1 b0表指示符表指示符描述符描述符i(0 089118911)段描述符段描述符0描述符描述符000 00 特权级特权级0 001 01 特权级特权级1 110 10 特权级特权级2 2
23、11 11 特权级特权级3 3请求特权级请求特权级2.2.2.3 Pentium2.3 Pentium的四种工作方式的四种工作方式1.实地址工作模式实地址工作模式n 最基本的工作方式。最基本的工作方式。n 8086/8088的实地址模式保持兼容。的实地址模式保持兼容。n 微处微处Pentium理器的实地址模式具有更强的功能,增理器的实地址模式具有更强的功能,增 加了寄存器,扩充了指令,可进行加了寄存器,扩充了指令,可进行32位操作。位操作。实模式操作方式只允许微处理器寻址第一个实模式操作方式只允许微处理器寻址第一个1MB存储器存储器空间空间;当微处当微处Pentium理器工作于实地址模式时,存
24、储器的管理器工作于实地址模式时,存储器的管理方式与理方式与8086微处理器存储器的管理方式完全相同。微处理器存储器的管理方式完全相同。2.保护虚拟方式保护虚拟方式 通常在程序运行过程中,应防止以下情况的发生:通常在程序运行过程中,应防止以下情况的发生:应用程序破坏系统程序。应用程序破坏系统程序。某一应用程序破坏了其他应用程序。某一应用程序破坏了其他应用程序。错误地把数据当作程序运行。错误地把数据当作程序运行。为了避免出现以上情形的发生,所采取的措施称作为了避免出现以上情形的发生,所采取的措施称作“保护保护”。CPUCPU复位复位RSMRSM复位复位或或RSMRSMVM=0VM=0VM=1VM=
25、1复位复位复位复位或或PE=0PE=0使使CRCR0 0的的PE=1PE=1系统管系统管理方式理方式保护保护方式方式虚拟虚拟80868086方式方式RSMRSMSMISMI实地址实地址方式方式SMISMISMISMI实地址实地址方式方式实地址方式实地址方式:工作原理工作原理与与80868086基本相同,主要基本相同,主要区别是借助操作数长度区别是借助操作数长度前缀能处理前缀能处理3232位数据,位数据,运行速度也更高,且可运行速度也更高,且可使用使用4 4个数据段。个数据段。保护保护方式方式保护方式:保护方式:CPUCPU可访问的物理存可访问的物理存储空间为储空间为2 23232=4=4GBG
26、B;程序可用程序可用的虚拟地址空间为的虚拟地址空间为2 24646=64=64TBTB。段长度在启动页功能时是段长度在启动页功能时是4 4GBGB,不启动页功能时是不启动页功能时是1 1MBMB。可支可支持多用户和单用户的多任务操持多用户和单用户的多任务操作作,并对各任务提供了多方面并对各任务提供了多方面的保护机制。的保护机制。虚拟虚拟80868086方式方式虚拟虚拟80868086方式:方式:既有保护功能又能既有保护功能又能执行执行80868086代码的工作方式,是保护代码的工作方式,是保护方式的一种子方式。方式的一种子方式。CPUCPU的工作原理的工作原理与保护虚地址方式下相同,但程序与保
27、护虚地址方式下相同,但程序指定的逻辑地址解释与指定的逻辑地址解释与80868086相同。相同。系统系统管理管理方式方式系统管理方式:系统管理方式:使设计使设计者实现高级管理功能,者实现高级管理功能,如对电源的管理以及为如对电源的管理以及为操作系统和正在运行的操作系统和正在运行的程序提供安全性。程序提供安全性。2.2.3 3 PentiumPentium微处理器指令系统微处理器指令系统2.2.3.1 3.1 基本基本数据类型数据类型2.2.3.2 3.2 操作数操作数寻址方式寻址方式2.2.3.3 3.3 PentiumPentium指令系统概貌指令系统概貌2.2.3.4 3.4 数据传送类指令
28、数据传送类指令2.2.3.5 3.5 算术运算类指令算术运算类指令2.2.3.6 3.6 逻辑运算和移位指令逻辑运算和移位指令2.2.3.7 3.7 串操作类指令串操作类指令2.2.3.8 3.8 控制转移类指令控制转移类指令 Pentium Pentium在其内部定点处理单元在其内部定点处理单元CPUCPU和浮点处理单元和浮点处理单元FPUFPU的支持下,共可处理的支持下,共可处理7 7类数据:类数据:1.1.无符号二进制数无符号二进制数2.2.带符号的二进制定点整数带符号的二进制定点整数3.3.浮点数浮点数4.4.BCDBCD码数码数5.5.串数据串数据6.6.ASCIIASCII码数据码
29、数据7.7.指针数据指针数据2.2.3.1 3.1 基本数据类型基本数据类型 这类数不带任何符号信息,只含有量值域这类数不带任何符号信息,只含有量值域,仅,仅CPUCPU支支持。分为三类持。分为三类:字节:字节:字:字:双字:双字:任何逻辑地址上的任何逻辑地址上的8 8位相邻位串。位相邻位串。任何字节地址开始的任何字节地址开始的2 2个相邻字节。个相邻字节。低字低字节地址为该字地址。节地址为该字地址。任何字节地址开始的任何字节地址开始的2 2个相邻字,即个相邻字,即4 4个个相邻字节。相邻字节。最小字节地址为双字的地址最小字节地址为双字的地址。1.1.无符号二进制数无符号二进制数(序数序数)这
30、类数均以补码表示这类数均以补码表示,有有8 8位数位数(字节字节)、1616位数位数(字字)、3232位数位数(双字双字)、6464位数位数(4(4字字)四种。四种。CPUCPU支持前支持前3 3种,种,FPUFPU支持后支持后3 3种。种。2.2.带符号的二进制定点整数带符号的二进制定点整数(整数整数)关于数据类型的两点说明:关于数据类型的两点说明:(1)(1)各类型数据中,基本的数据类型仍是字节、字和双字各类型数据中,基本的数据类型仍是字节、字和双字 尽可能将字操作尽可能将字操作对准对准于偶地址,将双字操作于偶地址,将双字操作对准对准于于4 4的整数倍地的整数倍地址。址。对准的字和双字可一
31、次传递完,未对准的字和双字需几次才能传对准的字和双字可一次传递完,未对准的字和双字需几次才能传递完。递完。(2)(2)对于字和双字数据,对于字和双字数据,8080X86X86是采用低端低地址方式来存储是采用低端低地址方式来存储 字数据被存储在两个相邻的字节单元之中,低位字节在低地址单字数据被存储在两个相邻的字节单元之中,低位字节在低地址单元,高位字节在高地址单元;元,高位字节在高地址单元;双字数据存储在四个连续字节单元中,最低位字节在最低地址单双字数据存储在四个连续字节单元中,最低位字节在最低地址单元,最高字节在最高地址单元元,最高字节在最高地址单元。而字或双字数据的地址是指而字或双字数据的地
32、址是指最低位字节最低位字节所在的单元地址。所在的单元地址。2.2.3.2 3.2 操作数寻址方式操作数寻址方式1.1.寻址方式和有效地址概念寻址方式和有效地址概念2.112.11种寻址方式种寻址方式3.3.存储器寻址时的段约定存储器寻址时的段约定4.4.应用举例应用举例 寻址方式就是寻找指令中操作数地址的方式。操作数所寻址方式就是寻找指令中操作数地址的方式。操作数所在地址有三种可能:在地址有三种可能:直接包含在指令中直接包含在指令中,即指令的操作数部分就是操作,即指令的操作数部分就是操作 数本身。这种操作数叫立即数数本身。这种操作数叫立即数,对应的指令寻址方对应的指令寻址方 式称为式称为立即数
33、寻址。立即数寻址。包含在包含在CPU CPU 的某个内部寄存器中的某个内部寄存器中。这时指令中的操。这时指令中的操 作数部分是作数部分是CPUCPU的一个寄存器的一个寄存器,这种指令寻址方式称这种指令寻址方式称 为为寄存器寻址寄存器寻址。在内存储器中在内存储器中。这时指令的操作数部分包含着该操。这时指令的操作数部分包含着该操 作数所在的内存地址。这种指令寻址方式称为作数所在的内存地址。这种指令寻址方式称为存储存储 器寻址器寻址。1.1.寻址方式和有效地址概念寻址方式和有效地址概念 寻址方式寻址方式 在在PentiumPentium系列系列MPUMPU中,内存实际地址中,内存实际地址(PA)PA
34、):PA=PA=段基地址段基地址 +段内偏移地址(段内偏移地址(EAEA )为了适应处理各种数据结构的需要,段内偏移地址为了适应处理各种数据结构的需要,段内偏移地址可由以下几部分组合而成:可由以下几部分组合而成:v 基址寄存器内容基址寄存器内容v 变址寄存器内容变址寄存器内容v 比例因子比例因子(仅与仅与3232位方式相关)位方式相关)v 位移量位移量 这四个基本部分称为偏移地址四元素,一般又将由这四个基本部分称为偏移地址四元素,一般又将由这四种元素组合形成的偏移地址称为有效地址这四种元素组合形成的偏移地址称为有效地址EAEA。EA=EA=基址基址+(+(变址比例因子变址比例因子)+)+位移量
35、位移量 有效地址有效地址EAEA有效地址元素有效地址元素1616位寻址位寻址3232位寻址位寻址基址寄存器基址寄存器 BX,BP BX,BP 任何任何3232位通用寄存器位通用寄存器变址寄存器变址寄存器 SI,DI SI,DI 除除ESPESP外的任何外的任何3232位通用寄存器位通用寄存器比例因子比例因子 无(或无(或1 1)1 1,2 2,4 4,8 8位移量位移量 0 0,8 8,1616位位 0 0,8 8,3232位位n 指令寻址字段规定了操作数的来源部件和如何计指令寻址字段规定了操作数的来源部件和如何计 算算EA的方法。的方法。n 实地址与保护方式的实地址与保护方式的PA 方法不同
36、方法不同.无无AX、CX、DX、SP、IP寄存器寄存器 保护方式下的寻址过程保护方式下的寻址过程(地址转换过程地址转换过程)-虚拟存储虚拟存储有效地址计算有效地址计算变址变址位移位移基址基址比例因子比例因子+3232位位有效地址有效地址31 031 0BE7BE7BE0BE0A31A31A3A332 32 位位32 32 位位1313位位描述符检索描述符检索段寄存器段寄存器选择符选择符 TITIRPLRPL15 3 2 1 015 3 2 1 0分段分段部件部件线性线性地址地址物理物理存储器存储器4G4G分页分页部件部件(可选可选)物理物理地址地址逻辑地址逻辑地址(虚拟虚拟)(CS,DS,ES
37、,SS,FS,GSCS,DS,ES,SS,FS,GS)不分页不分页逻辑地址逻辑地址 =段选择符段选择符 :有效地址:有效地址 偏移地址四元素可优化组合出偏移地址四元素可优化组合出9 9种存储器寻址方式种存储器寻址方式,加上加上立即数寻址和寄存器寻址,立即数寻址和寄存器寻址,PentiumPentium共有共有1111种寻址方式种寻址方式:(1)(1)立即数寻址立即数寻址(2)(2)寄存器寻址寄存器寻址(3)(3)直接寻址直接寻址(4)(4)寄存器间接寻址寄存器间接寻址(5)(5)基址寻址基址寻址(6)(6)变址寻址变址寻址(7)(7)比例变址寻址比例变址寻址(8)(8)基址加变址寻址基址加变址
38、寻址(9)(9)基址加比例变址寻址基址加比例变址寻址(10)(10)带位移的基址加变址寻址带位移的基址加变址寻址(11)(11)带位移的基址加比例变址寻址带位移的基址加比例变址寻址2.112.11种寻址方式种寻址方式 在这种寻址方式下在这种寻址方式下,操作数作为立即数操作数作为立即数直接存在指直接存在指令中令中,可为可为8 8位、位、1616位或位或3232位。位。例:例:MOV AXMOV AX,4567H4567HMOV BLMOV BL,78H78HMOV ECXMOV ECX,12345678H12345678H(1)(1)立即数寻址立即数寻址78563412顺序存放在指令后面 在这种
39、方式下在这种方式下,操作数包含在指令规定的操作数包含在指令规定的8 8位、位、1616位位或或3232位寄存器中。位寄存器中。例:例:MOV EAXMOV EAX,EDXEDXINC CLINC CLMOV DSMOV DS,AXAX 这种寻址方式指令编码短,无需从存储器取操作数,这种寻址方式指令编码短,无需从存储器取操作数,故执行速度快。故执行速度快。(2)(2)寄存器寻址寄存器寻址(寄存器直接寻址寄存器直接寻址)指令中的操作数部分直接给出操作数有效地指令中的操作数部分直接给出操作数有效地址址EAEA。与操作码一起放在存储器代码段中与操作码一起放在存储器代码段中,可以是,可以是1616位或位
40、或3232位整数。位整数。操作数一般在数据段操作数一般在数据段DSDS中。中。(3)(3)直接寻址直接寻址(存储器直接寻址存储器直接寻址)实际中对于直接寻址实际中对于直接寻址,如操作数在如操作数在DSDS段中段中,则可直则可直接写成接写成:MOV AX,3000HMOV AX,3000H 如操作数在如操作数在DSDS之外的其他段之外的其他段(CS,SS,ES,FS,GS)CS,SS,ES,FS,GS)中中,指令中则必须用段寄存器名前缀指令中则必须用段寄存器名前缀(称为段超越前缀称为段超越前缀)予以指明。例如:予以指明。例如:MOV AX,FS:3000HMOV AX,FS:3000H 直接寻址
41、主要用于单个操作数的相对寻址场合直接寻址主要用于单个操作数的相对寻址场合(如如简单的标量操作数寻址和静态分配数组的起始地址简单的标量操作数寻址和静态分配数组的起始地址寻址等寻址等)。操作数放在存储器中操作数放在存储器中,但其有效地址但其有效地址EAEA在寄存器中在寄存器中,即即:EA =EA =寄存器寄存器 寄存器的使用规定在寄存器的使用规定在1616位寻址和位寻址和3232位寻址时不一样。位寻址时不一样。1616位:位:BX,BP BX,BP,SI,DISI,DI 3232位:位:EAX EBX,ECX,EDXEAX EBX,ECX,EDX ESI.EDI.EBP,ESPESI.EDI.EB
42、P,ESP(4)(4)寄存器间接寻址寄存器间接寻址8 8个通用寄存器个通用寄存器 16 16位寻址时,偏移地址放在位寻址时,偏移地址放在SISI、DIDI、BPBP或或BXBX中。中。这时又有两种段默认情况:这时又有两种段默认情况:q若以若以SISI、DIDI、BXBX间接寻址间接寻址,则默认操作数在则默认操作数在DSDS段中。段中。例如:例如:MOV AX,SI ;MOV AX,SI ;默认默认DSDS为段基址为段基址q若以若以BPBP间接寻址间接寻址,则默认操作数在则默认操作数在SSSS段中。段中。例如:例如:MOV AX,BP ;MOV AX,BP ;默认默认SSSS为段基址为段基址 如
43、果操作数不在上述规定的默认段,而是在其他段,则如果操作数不在上述规定的默认段,而是在其他段,则必须在指令中相应的操作数前加上段必须在指令中相应的操作数前加上段超越前缀超越前缀。例如:。例如:MOV AX,ES:SIMOV AX,ES:SIMOV AX,DS:BPMOV AX,DS:BP 3232位寻址时位寻址时,8,8个个3232位通用寄存器均可作寄存器间接位通用寄存器均可作寄存器间接寻址。寻址。例如:例如:MOV EBX,EAX;MOV EBX,EAX;默认默认DSDS为段基址为段基址,传送双字给传送双字给EBXEBXMOV DX,EBX ;MOV DX,EBX ;默认默认DSDS为段基址为
44、段基址,传送字给传送字给DXDXMOV CH,EAX ;MOV CH,EAX ;默认默认DSDS为段基址为段基址,传送字节给传送字节给CHCH 除除ESPESP、EBPEBP默认段寄存器为默认段寄存器为SSSS外,其余外,其余6 6个通用寄存器个通用寄存器均默认段寄存器为均默认段寄存器为DSDS。如操作数在默认段之外,指令中必须加段超越前缀。如操作数在默认段之外,指令中必须加段超越前缀。寄存器间接寻址的应用场合与直接寻址的应用场合相寄存器间接寻址的应用场合与直接寻址的应用场合相似,当更灵活。似,当更灵活。在这种方式下在这种方式下,EA=EA=基址寄存器基址寄存器+位移量。位移量。其中位移量一定
45、要为常数其中位移量一定要为常数,且跟随在操作码之后且跟随在操作码之后,与与操作码一起存放在代码段中。操作码一起存放在代码段中。1616位寻址情况下位寻址情况下,BXBX和和BPBP作为基址寄存器。作为基址寄存器。BX BX以以DSDS作为默认段寄存器作为默认段寄存器,BP BP以以SSSS作为默认段寄存器。作为默认段寄存器。位移量可为位移量可为8 8位或位或1616位;位;3232位寻址情况下,位寻址情况下,8 8个个3232位通用寄存器均可作基址寄存器位通用寄存器均可作基址寄存器 其中其中ESPESP、EBPEBP以以SSSS为默认段寄存器,为默认段寄存器,其余其余6 6个通用寄存器均以个通
46、用寄存器均以DSDS为默认段寄存器为默认段寄存器。位移量为位移量为8 8位或位或3232位。位。例如:例如:MOV EAX,BX+24 ;MOV EAX,BX+24 ;也可写成也可写成MOV EAX,24BXMOV EAX,24BXMOV ECX,EBP+50;MOV ECX,EBP+50;也可写成也可写成MOV ECX,50EBPMOV ECX,50EBPMOV DX,EAX+1500H;MOV DX,EAX+1500H;也可写成也可写成MOV DX,1500HEAXMOV DX,1500HEAX(5)(5)基址寻址基址寻址与32位寄存器间接寻址方式相同 EA=EA=变址寄存器变址寄存器+位
47、移量位移量 指令书写格式和寻址执行过程与基址寻址相同;指令书写格式和寻址执行过程与基址寻址相同;区别仅在于将基址寄存器改成变址寄存器。区别仅在于将基址寄存器改成变址寄存器。(6)(6)变址寻址变址寻址 1616位寻址时,仅位寻址时,仅SISI、DIDI可作变址寄存器,且可作变址寄存器,且 默认默认DSDS作为段基址寄存器。如:作为段基址寄存器。如:MOV AX,MOV AX,COUNTCOUNTSISI 3232位寻址时位寻址时,除除ESPESP外的任何通用寄存器均可作变址寄存器。外的任何通用寄存器均可作变址寄存器。默认默认EBPEBP以以SSSS作段基址寄存器作段基址寄存器,其余均以其余均以
48、DSDS作段基址寄存器。作段基址寄存器。MOV EAX,5EBPMOV EAX,5EBPMOV ECX,MOV ECX,DATADATAEAXEAX 基址、变址寻址适于对一维数组的数组元素进行检索操基址、变址寻址适于对一维数组的数组元素进行检索操作。位移量表示数组起始地址偏移量;基址作。位移量表示数组起始地址偏移量;基址/变址表示数组变址表示数组元素的下标,可变。元素的下标,可变。MOV ECX,DATAESP 是什么寻址方式?是什么寻址方式?答案:基址寻址方式。默认段寄存器答案:基址寻址方式。默认段寄存器SS 变址寻址不能使用变址寻址不能使用ESP在这种方式下:在这种方式下:EA=EA=变址
49、寄存器变址寄存器 比例因子比例因子+位移量位移量这种寻址方式这种寻址方式只适于只适于3232位位寻址一种情况。例如:寻址一种情况。例如:MOV EAX,TABLEESIMOV EAX,TABLEESI*44 ;TABLE;TABLE是位移量是位移量,4,4是比例因子是比例因子(7)(7)比例变址寻址比例变址寻址 比例变址寻址和基址比例变址寻址和基址/变址寻址的作变址寻址的作用相似用相似,也适用于对一维数组元素的检索。也适用于对一维数组元素的检索。但当数组元素大小为但当数组元素大小为2/4/82/4/8字节时,用它字节时,用它更方便、更高效。更方便、更高效。在这种寻址方式下,在这种寻址方式下,E
50、A=EA=基址寄存器基址寄存器+变址寄存器变址寄存器 例如:例如:MOV AX,BX+SI ;MOV AX,BX+SI ;或写成或写成 MOV AX,BXSIMOV AX,BXSI MOV AX,BPSI MOV AX,BPSI 它有它有1616位寻址和位寻址和3232位寻址两种情况,每种情况下基址、变址位寻址两种情况,每种情况下基址、变址寄存器的使用规定和段寄存器的默认规定与前面所述相同。寄存器的使用规定和段寄存器的默认规定与前面所述相同。基址寄存器与变址寄存器默认的段寄存器不相同时,一般规定基址寄存器与变址寄存器默认的段寄存器不相同时,一般规定由基址寄存器来决定默认哪一个段寄存器作段基址指