欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    《指令系统层》PPT课件.ppt

    • 资源ID:71670471       资源大小:610KB        全文页数:72页
    • 资源格式: PPT        下载积分:11.9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要11.9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《指令系统层》PPT课件.ppt

    计算机系统结构计算机系统结构系统的层次结构系统的层次结构 面向问题语言层面向问题语言层汇编语言层汇编语言层操作系统层操作系统层指令系统层指令系统层微体系结构层微体系结构层5层4层3层2层1层硬件硬件-机器语言机器语言机器与人的界面机器与人的界面符号化的机器语言符号化的机器语言面向用户的语言面向用户的语言硬件硬件/固件固件(微程序微程序)翻译翻译(编译器编译器)翻译翻译(汇编器汇编器)部分解释部分解释(操作系统操作系统)直接执行直接执行/解释解释(微程序微程序)一台计算机所能执行的全部指令,称为该机的一台计算机所能执行的全部指令,称为该机的指令系统指令系统或或指令集指令集,具体内容包括,具体内容包括指令格式、指令格式、寻址方式、指令类型与功能寻址方式、指令类型与功能。相对微体系结构层,指令系统层是一个抽象的相对微体系结构层,指令系统层是一个抽象的层次,它是层次,它是硬件和软件之间的接口硬件和软件之间的接口,其主要特,其主要特征就是指令系统。征就是指令系统。本章将以本章将以80 x86为背景讨论指令系统层,主要为背景讨论指令系统层,主要内容包括:内容包括:80 x86系列系列CPU的结构特点;的结构特点;80 x86主存储器和寄存器组织;主存储器和寄存器组织;80 x86指令系统。指令系统。第第4 4章章 指令系统层指令系统层 典型典型CPU漫谈漫谈 从从 Intel 4004Pentium IV:4004 80088086/8088802868038680486 (IAIA3232位结构位结构)Pentium Pentium Pro Pentium MMX Pentium II Pentium III CeleronPentium IV (IAIA准准6464位结构位结构)Pentium D(2005-4发布)发布)Pentium 6470 2.4G3.8G4.1 80 x86 CPU 80 x86 CPU概况如下表所示:概况如下表所示:型号型号 发布发布 年代年代字长(位)字长(位)晶体管数晶体管数(万个)(万个)主频主频(MHz)内部数内部数据总线据总线宽度宽度(位)(位)外部数外部数据总线据总线宽度宽度(位)(位)地址总地址总线宽度线宽度(位)(位)寻址寻址空间空间片内片内高速高速缓存缓存80861978162.94.771616201MB无无80881979162.94.77168201MB无无8028619821613.462016162416 MB无无8038619861627.512.5333232324GB无无8048619891612016025503232324GB8KB 型号型号 发布发布 年代年代字长字长(位)(位)晶体管数晶体管数(万个)(万个)主频主频(MHz)内部数内部数据总线据总线宽度宽度(位)(位)外部数外部数据总线据总线宽度宽度(位)(位)地址总地址总线宽度线宽度(位)(位)寻址寻址空间空间片内高片内高速缓存速缓存Pentium(586)199332310330601666464324GB8KB数据数据8KB指令指令Pentium Pro(P6)199532550+155016020064643664GB8KB数据数据8KB指令指令256KB 二级高级二级高级缓存缓存Pentium II19973275023333364643664GB32KB512KB 二级高速二级高速缓存,有缓存,有独立封装独立封装和独立总和独立总线线4.1.1 8086/8088 CPU80868086是是1616位,即位,即CPUCPU的内外数据总线为的内外数据总线为1616位,位,一个总线周期可以传送一个字(一个总线周期可以传送一个字(1616位)数据。位)数据。80888088是准是准1616位,内部总线为位,内部总线为1616位,外部为位,外部为8 8位,位,因此一个总线周期只能传送一个字节。因此一个总线周期只能传送一个字节。地址地址2020位,可寻址位,可寻址1MB1MB主存空间。主存空间。8086/80888086/8088的指令系统完全相同,完全兼容的指令系统完全相同,完全兼容.18086/8088 CPU内部结构内部结构 模模型型机机CPU指指令令串串行行执执行行。在在CPU执执行行指指令令时时,系系统统总总线线与与主主存存可可能能空空闲闲,因因此此程程序序执执行行效效率率不不高高。8086/8088CPU8086/8088CPU采用采用指令流水线结构指令流水线结构 总线接口部件总线接口部件BIUBIU(Bus Interface UnitBus Interface Unit)取指令(或取操作数)取指令(或取操作数)执行部件执行部件EUEU(Execute UnitExecute Unit)执行指令执行指令 EU EU和和BIUBIU两个部件两个部件并行工作并行工作,指令的读取与执行指令的读取与执行部分重叠,从而提高了指令的执行速度。部分重叠,从而提高了指令的执行速度。8086 CPU内部结构如下图所示内部结构如下图所示:下面讨论下面讨论EU和和BIU的功能的功能:(1)执行部件)执行部件EU:执行指令执行指令从指令队列中取出指令代码,由从指令队列中取出指令代码,由EU控制器进行译码控制器进行译码后产生对应的控制信号到各部件以完成指令规定的操后产生对应的控制信号到各部件以完成指令规定的操作。作。对操作数进行算术和逻辑运算,并将运算结果的特征对操作数进行算术和逻辑运算,并将运算结果的特征状态存放在标志寄存器中。状态存放在标志寄存器中。由于由于EU不直接与系统总线连接,因此当需要与主存不直接与系统总线连接,因此当需要与主存储器或储器或I/O端口传送数据时,端口传送数据时,EU向向BIU发出命令,并发出命令,并提供给提供给BIU 16位有效地址与传送的数据。位有效地址与传送的数据。(2)总线接口部件)总线接口部件BIU:完成完成CPU与主存或与主存或I/O端口之间的信息传送端口之间的信息传送从主存取出指令送到指令队列中排队。从主存取出指令送到指令队列中排队。从主存或从主存或I/OI/O端口取操作数或存放运算结果。端口取操作数或存放运算结果。计算并形成访问主存的计算并形成访问主存的2020位物理地址。位物理地址。2.8086/8088 主存地址的形成主存地址的形成段基址:段基址:将将1 MB主存空间划分为若干段,主存空间划分为若干段,每个段的最大长度为每个段的最大长度为64 KB。段的。段的20位段位段起始地址称为段基址。起始地址称为段基址。段基值:段基值:20位段起始地址的高位段起始地址的高16位位偏移地址(偏移量):偏移地址(偏移量):一个主存单元与一个主存单元与所在段的段基址之间的字节距离。所在段的段基址之间的字节距离。逻辑地址逻辑地址:(段基址段基址:偏移地址偏移地址)物理地址物理地址:将将16位段基值左移位段基值左移4位后与位后与16位偏移地址相加,形成位偏移地址相加,形成20位主存单元。位主存单元。有效地址有效地址?4.1.2 80386/80486CPU(过渡产品过渡产品)1Intel 8038632位地址,寻址空间为位地址,寻址空间为4GB。具有片内存储管理部件,使虚拟存储空间(逻辑具有片内存储管理部件,使虚拟存储空间(逻辑地址空间)可达地址空间)可达64TB。字长字长32位,系统总线的数据通路宽度位,系统总线的数据通路宽度32位。位。采用多级流水线结构。采用多级流水线结构。平均运算速度约为平均运算速度约为4 MIPS。2Intel 80486 4.1.3 Pentium系列系列CPU(Pentium CPU的功能结构图的功能结构图)4.2.1 80 x86 CPU的寄存器的寄存器 180 x86 CPU的寄存器分类的寄存器分类(3大类大类)基本结构寄存器组基本结构寄存器组 :通用寄存器、通用寄存器、IP、FR、段寄存器。、段寄存器。系统级寄存器组系统级寄存器组 :(不能访问不能访问)系统地址寄存器、控制寄存器、测试寄存器、调试寄存器。系统地址寄存器、控制寄存器、测试寄存器、调试寄存器。浮点寄存器组浮点寄存器组 :(不讲不讲,不做要求不做要求)数据寄存器、标记字寄存器、指令和数据指针寄存器、控制数据寄存器、标记字寄存器、指令和数据指针寄存器、控制字寄存器。字寄存器。4.2 80 x86 CPU的寄存器和主存储器的寄存器和主存储器2基本结构寄存器组基本结构寄存器组 通用寄存器;通用寄存器;指令指针寄存器指令指针寄存器IP;标志寄存器标志寄存器FR;段寄存器段寄存器(16位位)。(1 1)通用寄存器)通用寄存器 AXAX(AccumulatorAccumulator)作为累加器用。)作为累加器用。在乘除等指在乘除等指令中指定用来存放操作数。另外,所有的令中指定用来存放操作数。另外,所有的I/O I/O 指指令都使用这一寄存器与外部设备传送信息。令都使用这一寄存器与外部设备传送信息。eg1eg1 MUL SRC AX MUL SRC AXAL*SRCAL*SRC eg2eg2 DIV SRC AL DIV SRC ALAX/SRC AX/SRC 商商 AHAHAX/SRC AX/SRC 余数余数 eg3eg3 MOV AH,4CH MOV AH,4CH INT 21H INT 21H 返回返回DOSDOS BXBX(BaseBase)可以作为通用寄存器使用。)可以作为通用寄存器使用。此外,在此外,在计算存储器地址时,它经常用作计算存储器地址时,它经常用作基址寄存器基址寄存器。CX CX(CountCount)可以作为通用寄存器使用。)可以作为通用寄存器使用。此外,它还此外,它还常用来保存计数值,如在移位指令、循环(常用来保存计数值,如在移位指令、循环(LOOPLOOP)和串处理指令中用作隐含的计数器。和串处理指令中用作隐含的计数器。DX DX可以作为通用寄存器使用。可以作为通用寄存器使用。一般在做双字长运算一般在做双字长运算时把时把DXDX和和AXAX组合在一起存放一个双字长数,组合在一起存放一个双字长数,DXDX用来用来存放高位字。此外,对某些存放高位字。此外,对某些I/O I/O 操作,操作,DXDX可用来存可用来存放放I/O I/O 的端口地址。的端口地址。SPSP、BPBP、DIDI、SISI 这这4 4个个1616位寄存器可以像数据寄存位寄存器可以像数据寄存器一样在运算过程中存放操作数,但它们只能以字器一样在运算过程中存放操作数,但它们只能以字(1616位)位)为单位使用。此外,它们更经常的用途是为单位使用。此外,它们更经常的用途是在存储器寻址时,提供偏移地址。因此,可称它们在存储器寻址时,提供偏移地址。因此,可称它们为指针或变址寄存器。为指针或变址寄存器。(2 2)指令指针寄存器和标志寄存器)指令指针寄存器和标志寄存器IPIP(Instruction PointerInstruction Pointer)为指令指针寄存器,)为指令指针寄存器,它用来存放代码段中的偏移地址。它用来存放代码段中的偏移地址。IPIP作为指令的地作为指令的地址指针,其作用类似于其他计算机中的程序计数器址指针,其作用类似于其他计算机中的程序计数器PCPC,当现行指令执行完毕时,由,当现行指令执行完毕时,由IPIP提供下一条指令提供下一条指令地址。地址。FLAGSFLAGS为标志寄存器,又称为标志寄存器,又称PSWPSW(Program Status Program Status WordWord),即程序状态寄存器。),即程序状态寄存器。这是一个存放条件码这是一个存放条件码标志、控制标志和系统标志的寄存器。标志、控制标志和系统标志的寄存器。8038680386及其后继机型及其后继机型的指令指针寄存器的指令指针寄存器EIPEIP和标志寄和标志寄存器存器EFLAGSEFLAGS是是3232位位的,其作用和相应的的,其作用和相应的1616位寄存器位寄存器相同。相同。下图说明了下图说明了80 x86 CPU中标志寄存器的内容中标志寄存器的内容:条件码标志包括以下条件码标志包括以下6位:位:OF(Over Flow Flag)溢出标志。溢出标志。将将参加算术运算的数看作带符号数,如参加算术运算的数看作带符号数,如运算结运算结果果超出补码表示数的范围超出补码表示数的范围N,即溢出时,则,即溢出时,则OF置置1;否则;否则OF置置0。SF(Sign Flag)符号标志。符号标志。把指令执把指令执行结果看作带符号数,如结果为负,则行结果看作带符号数,如结果为负,则SF置置1;结果为正,则;结果为正,则SF置置0。ZF(Zero Flag)零标志。零标志。如指令执行如指令执行结果各位全为结果各位全为0时,则时,则ZF置置1;否则;否则ZF置置0。CF(Carry Flag)进位标志。进位标志。在进行算术在进行算术运算时,如最高位(对字操作是第运算时,如最高位(对字操作是第15位,对字节位,对字节操作是第操作是第7位)产生进位或借位时,则位)产生进位或借位时,则CF置置1;否;否则置则置0。在移位类指令中,。在移位类指令中,CF用来存放移出的代用来存放移出的代码(码(0或或1)。)。AF(Auxiliary Carry Flag)辅助进位标辅助进位标志。志。在进行算术运算时,如低字节中低在进行算术运算时,如低字节中低4位(第位(第3位)产生进位或借位时,则位)产生进位或借位时,则AF置置1;否则;否则AF置置0。PF(Parity Flag)奇偶标志。奇偶标志。用来为机器用来为机器中传送信息时可能产生的代码出错情况提供检验中传送信息时可能产生的代码出错情况提供检验条件。当运算结果中条件。当运算结果中1的个数为偶数时置的个数为偶数时置1,否则,否则置置0。控制标志位控制标志位1位位 DF(Direction Flag)方向标志,用来在串)方向标志,用来在串处理指令中控制处理信息的方向。处理指令中控制处理信息的方向。当当DF位为位为1时,每次操作后使变址寄存器时,每次操作后使变址寄存器SI和和DI减小,这减小,这样就使串处理从高地址向低地址方向处理。当样就使串处理从高地址向低地址方向处理。当DF位为位为0时,则使时,则使SI和和DI增大,使串处理从低增大,使串处理从低地址向高地址方向处理。地址向高地址方向处理。eg MOVSB 若若DF=0,则则 ES:DI(DS:SI)SI (SI)+1 DI (DI)+1 系统标志位有系统标志位有1010位:位:TFTF(Trap FlagTrap Flag)陷阱标志)陷阱标志,用于调试时的单步方式操作。,用于调试时的单步方式操作。IFIF(Interrupt FlagInterrupt Flag)中断标志)中断标志 。IOPLIOPL(I/O Privilege LevelI/O Privilege Level)I/OI/O特权级标志特权级标志 。NTNT(Nested TaskNested Task)嵌套任务标志)嵌套任务标志,用来表示当前的任务是,用来表示当前的任务是否嵌套在另一任务内。否嵌套在另一任务内。RF RF(Resume FlagResume Flag)恢复标志位,)恢复标志位,它与调试寄存器的断点一它与调试寄存器的断点一起使用,以保证不重复处理断点。起使用,以保证不重复处理断点。VMVM(Virtual-8086 ModeVirtual-8086 Mode)虚拟)虚拟80868086模式位模式位 。AC AC(Alignment Check modeAlignment Check mode)对准检查方式位)对准检查方式位 。VIF VIF(Virtual Interrupt FlagVirtual Interrupt Flag)虚拟中断标志。)虚拟中断标志。VIP VIP(Virtual Interrupt Pending flagVirtual Interrupt Pending flag)虚拟中断未决标)虚拟中断未决标志。志。ID ID(IDentification flagIDentification flag)标识标志,)标识标志,程序有设置和清除程序有设置和清除IDID标识的能力,以指示处理机对标识的能力,以指示处理机对CPU IDCPU ID指令的支持。指令的支持。在调试程序在调试程序DEBUG中提供了测试标志位的手段,它中提供了测试标志位的手段,它用符号表示某些标志位的值:用符号表示某些标志位的值:标志名标志名标志为标志为1标志为标志为0 OF 溢出(是溢出(是/否)否)OV(overflow)NV DF 方向(增量方向(增量/减量)减量)DN(down)UP IF 中断(允许中断(允许/关闭)关闭)EI(enable)DI(disable)SF 符号(负符号(负/正)正)NG(negative)PL(plus)ZF 零(是零(是/否)否)ZR(zero)NZ AF 辅助进位(是辅助进位(是/否)否)AC(auxiliary carry)NA PF 奇偶(偶奇偶(偶/奇)奇)PE(even)PO(odd)CF 进位(是进位(是/否)否)CY(carry)NC(3 3)段寄存器)段寄存器1616位位 段寄存器用于存储器寻址,用来直接或段寄存器用于存储器寻址,用来直接或 间接地存放段地址间接地存放段地址(段基值或段选择器段基值或段选择器)代码段代码段CSCS(Code SegmentCode Segment)数据段数据段DSDS(Data SegmentData Segment)堆栈段堆栈段SSSS(Stack SegmentStack Segment)附加段附加段ESES(Extra SegmentExtra Segment)FSFS和和GSGS,附加的数据段附加的数据段(80386(80386以后以后)4.2.2 80 x86的主存储器的主存储器 1存储单元的地址和内容存储单元的地址和内容计算机存储信息的计算机存储信息的基本单位基本单位是是一个二进制一个二进制位位,一位可存储一个一位可存储一个二进制数二进制数0 0或或1.1.字节字节:8:8位位字字:16:16位位双字双字:32:32位位4 4字字:64:64位位地址地址:以字节为单元编址以字节为单元编址,每个字节单元一个唯一的编每个字节单元一个唯一的编号号(房间号码房间号码),),即存储器地址即存储器地址,称为称为物理地址物理地址.地址从地址从0 0开始编号,顺序地每次加开始编号,顺序地每次加1.1.地址用二进制表示的地址用二进制表示的无符无符号整数号整数,书写格式为十六进制数书写格式为十六进制数)8086/8088的的地址总线地址总线20位:位:可访问的字节单元地址范围为可访问的字节单元地址范围为00000HFFFFFH;80286的的地址总线地址总线24位:位:可访问的地址范围为可访问的地址范围为000000HFFFFFFH;80386/80486和和Pentium地址总线地址总线32位:位:可访问的地址范围为可访问的地址范围为00000000HFFFFFFFFH;Pentium Pro和和P地址总线地址总线36位:位:可访问的地址范围为可访问的地址范围为000000000HFFFFFFFFFH。内容内容:一个存储单元中存放的信息称为该存一个存储单元中存放的信息称为该存储单元的内容储单元的内容 0004H号字节单元中存放的信息为号字节单元中存放的信息为78H,表示为表示为:(0004H)=78H两两个个字字节节单单元元就就构构成成了了一一个个字字单单元元,字字单单元元的的地地址址采采用用它它的的低低地地址址来来表表示示。右右图图中中0004H0004H字单元的内容为字单元的内容为5678H5678H,表示为,表示为:(0004H0004H)=5678H=5678H双字双字单元的地址由其单元的地址由其最低字节的地址最低字节的地址指定,因此指定,因此0004H双字单元的内容为:双字单元的内容为:(0004H)=12345678H。说明存放数据时,低位字节存入低地址,高位字节存入高地址字,双字的地址用低地址表示同一地址单元既可以看作字节、字、双字、4字单元的地址字单元的地址可以是偶数,也可以是奇数8086、80286,访问M以字为单位,以偶地址访问(读/写)M;奇地址取字需访问M两次X表示地址,(X)表示单元的内容(Y)=(X)实模式虚拟实模式虚拟8086模式保护模式模式保护模式实模式:8086用16根地址线提供1M寻址空间的工作模式保护模式:一种可提供虚拟存储管理和多任务管理机制的工作模式。虚模式:在一台机器上同时模拟多个8086处理器工作的模式。2实模式存储器寻址实模式存储器寻址 8086/8088只能在实模式下,只能在实模式下,其他的其他的CPU均可在实模式或保护模式下工作。均可在实模式或保护模式下工作。(1)存储器的分段)存储器的分段 实模式下允许的实模式下允许的最大寻址空间为最大寻址空间为1 MB。8086/8088的地址总线宽度为的地址总线宽度为20位,因而其最大位,因而其最大寻址空间正好是寻址空间正好是1MB。在在1MB的存储器里,每个存储单元都有一个唯一的存储器里,每个存储单元都有一个唯一的的20位地址,称为物理地址。位地址,称为物理地址。而对于其他微处理器在实模式下而对于其他微处理器在实模式下只能访问前只能访问前1 MB的存储器地址。的存储器地址。8086/8088:16位字长的机器里怎么提供位字长的机器里怎么提供20位地址位地址?段基址:段基址:将将1 MB主存空间划分为若干段,主存空间划分为若干段,每个段的最大长度为每个段的最大长度为64 KB。段的。段的20位段位段起始地址称为段基址。起始地址称为段基址。段基值:段基值:20位段起始地址的高位段起始地址的高16位位偏移地址(偏移量):偏移地址(偏移量):一个主存单元与一个主存单元与所在段的段基址之间的字节距离。所在段的段基址之间的字节距离。逻辑地址逻辑地址:(段基址段基址:偏移地址偏移地址)物理地址物理地址:将将16位段基值左移位段基值左移4位后与位后与16位偏移地址相加,形成位偏移地址相加,形成20位主存单元。位主存单元。有效地址有效地址?实模式存储器寻址过程如下图所示:实模式存储器寻址过程如下图所示:(2)段寄存器)段寄存器 在在808680286中,有中,有4个专门存放段基值的寄存器,个专门存放段基值的寄存器,称为段寄存器。它们分别是称为段寄存器。它们分别是代码段代码段CS、数据段、数据段DS、堆栈段、堆栈段SS和附加段和附加段ES寄存器寄存器。每个段寄存器可以确定一个段的起始地址,而这些段则各每个段寄存器可以确定一个段的起始地址,而这些段则各有各的用途。有各的用途。代码段存放当前正在运行的程序。数据段存放当代码段存放当前正在运行的程序。数据段存放当前运行程序所用的数据。堆栈段定义了堆栈的所在区域。附加前运行程序所用的数据。堆栈段定义了堆栈的所在区域。附加段是附加的数据段,它是一个辅助的数据区,也是串处理指令段是附加的数据段,它是一个辅助的数据区,也是串处理指令的目的操作数存放区。的目的操作数存放区。在在80386及其后继的及其后继的80 x86中,除上述中,除上述4个段寄存器外,个段寄存器外,又增加了又增加了2个段寄存器个段寄存器FS和和GS,它们也是附加的数据段寄存器,它们也是附加的数据段寄存器,所以,所以808680286的程序允许的程序允许4个存储段,而后继的个存储段,而后继的80 x86程序可允许程序可允许6个存储段。个存储段。一般情况下,各段在存储器一般情况下,各段在存储器中的分配是由操作系统负责的。中的分配是由操作系统负责的。每个段可以独立地占用小于或每个段可以独立地占用小于或等于等于64 KB的存储区,如右图所的存储区,如右图所示。示。段重叠段重叠指每个段区的指每个段区的大小允许根据实际需大小允许根据实际需要来分配,而不一定要来分配,而不一定要占有要占有64 KB的最大的最大段空间。段空间。在在80 x86中,段寄存器和与其对应存放偏移地址中,段寄存器和与其对应存放偏移地址的寄存器之间有一种默认的组合关系,如下表所示的寄存器之间有一种默认的组合关系,如下表所示:8086/8088、80286:段寄存器段寄存器 偏移地址偏移地址CSIPSSSP或或BPDSBX、SI、DI或一个或一个16位数位数ESDI(用于串指令)(用于串指令)80386及其后继机型:及其后继机型:段寄存器段寄存器 偏移地址偏移地址CSEIPSSESP或或EBPDSEAX、EBX、ECX、EDX、EDI、ESI、一个、一个8或或32位数位数ESEDI(用于串指令)(用于串指令)FS无默认无默认GS无默认无默认3保护模式存储器寻址保护模式存储器寻址 (1)逻辑地址)逻辑地址 逻辑地址逻辑地址(段选择器段选择器:偏移地址偏移地址)段选择器存放在段寄存器中,但它不能直接确定段段选择器存放在段寄存器中,但它不能直接确定段基址,而由基址,而由CPU通过一定的方法取得段基址,再通过一定的方法取得段基址,再和偏移地址相加,从而求得所选存储单元的线性和偏移地址相加,从而求得所选存储单元的线性地址,线性地址再通过分页部件转换成物理地址。地址,线性地址再通过分页部件转换成物理地址。下图为保护模式存储器寻址示意图。可以看出,它和实模下图为保护模式存储器寻址示意图。可以看出,它和实模式寻址的另一个区别是:偏移地址为式寻址的另一个区别是:偏移地址为32位,最大段长可从位,最大段长可从64 KB扩大到扩大到4 GB。(2)描述符)描述符 段选择器是通过描述符表取得描述符,从而得到段基址段选择器是通过描述符表取得描述符,从而得到段基址的。描述符有的。描述符有8个字节长,用来说明段的起始地址、段的个字节长,用来说明段的起始地址、段的大小、段在存储器中的位置及有关的控制和状态信息,大小、段在存储器中的位置及有关的控制和状态信息,其格式如下图所示其格式如下图所示:(3)段选择器段选择器描述符表都存放在存储器中,每个表分别构成一个描述符表都存放在存储器中,每个表分别构成一个64 KB长的段,表中可存放长的段,表中可存放8 K个描述符。个描述符。段选择器存放在段寄存器中,段选择器存放在段寄存器中,16位位长,其格式如下:长,其格式如下:INDEX为索引值为索引值,即描述符表索引值,它给出所选描,即描述符表索引值,它给出所选描述符在描述符表中的地址。该字段共述符在描述符表中的地址。该字段共13位,可从表中位,可从表中8K个描述符中选取一个。个描述符中选取一个。下图说明了从逻辑地址通过段选择器找到描述符表,再找到下图说明了从逻辑地址通过段选择器找到描述符表,再找到描述符,由此确定所选段和存储单元的过程描述符,由此确定所选段和存储单元的过程:每当段寄存器中段选择器的值确定以后,硬件会自动地根据段选择器的索每当段寄存器中段选择器的值确定以后,硬件会自动地根据段选择器的索引值,从系统的描述符表中取出一个引值,从系统的描述符表中取出一个8字节(字节(64位)的描述符,装入到相应的段位)的描述符,装入到相应的段描述符寄存器中,以后每当出现对该段存储器的访问时,就可直接使用相应的描述符寄存器中,以后每当出现对该段存储器的访问时,就可直接使用相应的描述符寄存器中的段基址作为线性地址计算的一个元素,而不需要在内存中查描述符寄存器中的段基址作为线性地址计算的一个元素,而不需要在内存中查表得到段基址,因此加快了存储器物理地址的形成。表得到段基址,因此加快了存储器物理地址的形成。应当指出,段寄存器是程序可访问的,而描述符寄存器则是程序应当指出,段寄存器是程序可访问的,而描述符寄存器则是程序不可访问不可访问的。的。为了提高保护模式存储器寻址的速度,为了提高保护模式存储器寻址的速度,CPU中设置了中设置了6个个64位位的描述符寄存器,用来存放对应段的描述符,如下图所示:的描述符寄存器,用来存放对应段的描述符,如下图所示:480 x86 CPU逻辑地址的来源逻辑地址的来源 从以上内容可知,实模式下的逻辑地址由段基值和偏从以上内容可知,实模式下的逻辑地址由段基值和偏移地址组成;而保护模式下的逻辑地址由段选择器和偏移移地址组成;而保护模式下的逻辑地址由段选择器和偏移地址组成。实际上段基值和选择器都是由段寄存器提供。地址组成。实际上段基值和选择器都是由段寄存器提供。在汇编语言程序中,逻辑地址可表示为:在汇编语言程序中,逻辑地址可表示为:段基值(或段选择器):偏移地址段基值(或段选择器):偏移地址 在在80 x86 CPU中,逻辑地址的两个分量之间存在一种默中,逻辑地址的两个分量之间存在一种默认组合关系,可以不在程序中指明。这种默认组合取决于认组合关系,可以不在程序中指明。这种默认组合取决于指令所需的操作类型,表指令所需的操作类型,表4-3给出了不同操作类型,获得段给出了不同操作类型,获得段基值(或段选择器)和偏移地址的不同来源。基值(或段选择器)和偏移地址的不同来源。表表4-3 4-3 逻辑地址的两个分量的默地址的两个分量的默认组合关系合关系序序号号操操 作作 类类 型型逻逻 辑辑 地地 址址段基值(或段选择器)段基值(或段选择器)偏移地址偏移地址(OFFSET)默认来源默认来源允许替代来源允许替代来源1取指令取指令CS无无IP或或EIP2堆栈操作堆栈操作SS无无SP或或ESP3取源串取源串DSCS、SS、ESSI或或ESI4存目的串存目的串ES无无DI或或EDI5以以BP作基址作基址SSCS、DS、ES有效地址有效地址EA6存取存储器操作数存取存储器操作数(除上述(除上述3,4,5项)项)DSCS、SS、ES有效地址有效地址EA 在这种默认组合下,程序中不必专门指定其组合关系,但程序在这种默认组合下,程序中不必专门指定其组合关系,但程序如用到非默认的组合关系(如使用允许替代来源),则必须用段如用到非默认的组合关系(如使用允许替代来源),则必须用段跨越前缀加以说明。跨越前缀加以说明。当当CPU执行从存储器取指令的操作时,必须由代码段寄执行从存储器取指令的操作时,必须由代码段寄存器存器CS提供段基值(或段选择器),而偏移地址从指令指针提供段基值(或段选择器),而偏移地址从指令指针IP或或EIP中获得。如指令执行的是堆栈操作,则必须由中获得。如指令执行的是堆栈操作,则必须由SS提供提供当前段段基值(或段选择器),而堆栈指针当前段段基值(或段选择器),而堆栈指针SP或或ESP给出栈给出栈顶单元的偏移地址。如指令执行时,需要存取存储器中的操顶单元的偏移地址。如指令执行时,需要存取存储器中的操作数,操作数通常存放在当前数据段中,则隐含由作数,操作数通常存放在当前数据段中,则隐含由DS提供段提供段基值(或段选择器);如操作数在其他当前段中,则用其他基值(或段选择器);如操作数在其他当前段中,则用其他段寄存器(如段寄存器(如CS、SS、ES)来指定操作数所在段,这时指令)来指定操作数所在段,这时指令中必须要给出对应的段寄存器名,即段跨越前缀,而存放操中必须要给出对应的段寄存器名,即段跨越前缀,而存放操作数单元的偏移地址是由作数单元的偏移地址是由CPU根据指令提供的寻址方式计算根据指令提供的寻址方式计算得到的。按寻址方式计算出来的偏移地址又称为得到的。按寻址方式计算出来的偏移地址又称为有效地址有效地址EA(Effective Address)。)。4.3 80 x86 CPU的指令系统的指令系统 80 x86 CPU的指令集是在的指令集是在8086/8088 CPU的指令系统上发展的指令系统上发展起来的。起来的。8086/8088 指令系统是基本指令集,指令系统是基本指令集,80286、80386、80486和和Pentium指令系统是在基本指令集上进行了扩充。扩充指令系统是在基本指令集上进行了扩充。扩充指令的一部分是增强的指令的一部分是增强的8086/8088基本指令和一些专用指令;另基本指令和一些专用指令;另一部分是系统控制指令,即特权指令,它们对一部分是系统控制指令,即特权指令,它们对80286、80386、80486和和Pentium保护模式的多任务、存储器管理和保护机制提保护模式的多任务、存储器管理和保护机制提供了控制能力。供了控制能力。80 x86 CPU采用了变字长的机器指令格式,由采用了变字长的机器指令格式,由115个字节个字节组成一条指令。一般格式如下图所示组成一条指令。一般格式如下图所示:本节先介绍本节先介绍80 x86的寻址方式,然后着重介绍用于运行应用程的寻址方式,然后着重介绍用于运行应用程序的序的80 x86指令。指令。4.3.1 80 x86寻址方式寻址方式 指令中的寻址方式是用来确定操作数地址指令中的寻址方式是用来确定操作数地址以找到指令所需的操作数。以找到指令所需的操作数。在在80 x86 CPU中,中,8086和和80286的字长是的字长是16位,一般情况下只处理位,一般情况下只处理8位和位和16位操作数,位操作数,只是在乘、除指令中才会有只是在乘、除指令中才会有32位操作数;位操作数;80386及其后继机型的字长为及其后继机型的字长为32位,因此它除位,因此它除可处理可处理8位和位和16位操作数外,还可处理位操作数外,还可处理32位操位操作数,在乘、除法情况下可产生作数,在乘、除法情况下可产生64位操作数。位操作数。本节下面所述例子中,如处理的是本节下面所述例子中,如处理的是32位操作位操作50数,则适用于数,则适用于80386及其后继机型。及其后继机型。1立即寻址方式和寄存器寻址方式立即寻址方式和寄存器寻址方式(1)立即寻址方式()立即寻址方式(Immediate Addressing)立即数寻址是指指令所需的操作数直接在指令代码中,立即数寻址是指指令所需的操作数直接在指令代码中,随着取指令一起取到随着取指令一起取到CPU中。这种操作数称为立即数。中。这种操作数称为立即数。立立即数可以是即数可以是8位或位或16位的。对于位的。对于80386及其后继机型则可及其后继机型则可以是以是8位或位或32位的。位的。这种寻址方式如下图所示这种寻址方式如下图所示:【例【例4-1】下述汇编指令的源操作数都采用立即寻址方式。下述汇编指令的源操作数都采用立即寻址方式。MOV AL,5 ;将;将8位立即数位立即数05H送入送入AL中中 MOV AX,0B064H MOV BX,AB MOV EAX,12345678H 立即数用来表示常数,它经常用于给寄存器赋初值,并且只立即数用来表示常数,它经常用于给寄存器赋初值,并且只能用于源操作数字段,不能用于目的操作数字段,且源操作数能用于源操作数字段,不能用于目的操作数字段,且源操作数长度应与目的操作数长度一致。在汇编指令中,立即数若是数长度应与目的操作数长度一致。在汇编指令中,立即数若是数值常数可直接书写,若是字符常数则应加上引号。值常数可直接书写,若是字符常数则应加上引号。在汇编指令中,立即数若是以在汇编指令中,立即数若是以AF开始的十六进制数,则开始的十六进制数,则必须在数前面加上必须在数前面加上0,如上述第二条指令,否则汇编程序会将立,如上述第二条指令,否则汇编程序会将立即数当作符号处理。即数当作符号处理。寄存器寻址是指指令所需的操作数存放在寄存器寻址是指指令所需的操作数存放在CPU的寄存器的寄存器(通用寄存器或段寄存器)中,通过指令中的寄存器地址去找(通用寄存器或段寄存器)中,通过指令中的寄存器地址去找到操作数。到操作数。(2)寄存器)寄存器寻寻址方式(址方式(Register Addressing)在汇编指令中,寄存器地址直接用寄存器名表示,如用在汇编指令中,寄存器地址直接用寄存器名表示,如用AX、BX、AL、BH、EAX、EBX、DS、ES等,这些寄存器可以是等,这些寄存器可以是8位的、位的、16位的或位的或32位的。这种寻址方式如下图所示:位的。这种寻址方式如下图所示:【例【例4-3】MOV BL,AL;将将AL中的内容送到中的内容送到BL中中 MOV DS,AX MOV

    注意事项

    本文(《指令系统层》PPT课件.ppt)为本站会员(wuy****n92)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开