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

    汇编与组成第4章2.ppt

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

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

    汇编与组成第4章2.ppt

    第第 4 章章(2)14.2.1 80 x86 CPU的寄存器的寄存器 180 x86 CPU的寄存器分类的寄存器分类 80 x86 CPU的内部寄存器可分为以下的内部寄存器可分为以下3大类:大类:基本结构寄存器组基本结构寄存器组 :通用寄存器、指令指针寄存器、标志寄存通用寄存器、指令指针寄存器、标志寄存器、段寄存器。器、段寄存器。系统级寄存器组系统级寄存器组 :系统地址寄存器、控制寄存器、测试寄存器、系统地址寄存器、控制寄存器、测试寄存器、调试寄存器。调试寄存器。浮点寄存器组浮点寄存器组 :数据寄存器、标记字寄存器、指令和数据指针寄数据寄存器、标记字寄存器、指令和数据指针寄存器、控制字寄存器。存器、控制字寄存器。4.2 80 x86 CPU的寄存器和主存储器的寄存器和主存储器22基本结构寄存器组基本结构寄存器组 基基本本结结构构寄寄存存器器组组如如右右图图所示:所示:通用寄存器;通用寄存器;指令指针寄存器;指令指针寄存器;标志寄存器;标志寄存器;段寄存器段寄存器。3(1)通用寄存器)通用寄存器 图中除阴影区以外的寄存器是图中除阴影区以外的寄存器是8086/8088和和80286所具所具有的寄存器,它们都是有的寄存器,它们都是16位寄存器。其中位寄存器。其中4个个16位的寄存位的寄存器器AX、BX、CX、DX可称为数据寄存器。这可称为数据寄存器。这4个寄存器都个寄存器都是通用寄存器,但它们又可以用于各自的专用目的。是通用寄存器,但它们又可以用于各自的专用目的。AX(Accumulator)作为累加器用。)作为累加器用。在乘除等指令中在乘除等指令中指定用来存放操作数。另外,所有的指定用来存放操作数。另外,所有的I/O 指令都使用这一指令都使用这一寄存器与外部设备传送信息。寄存器与外部设备传送信息。BX(Base)可以作为通用寄存器使用。)可以作为通用寄存器使用。此外,在计算此外,在计算存储器地址时,它经常用作基址寄存器。存储器地址时,它经常用作基址寄存器。CX(Count)可以作为通用寄存器使用。)可以作为通用寄存器使用。此外,它还此外,它还常用来保存计数值,如在移位指令、循环(常用来保存计数值,如在移位指令、循环(LOOP)和串)和串处理指令中用作隐含的计数器。处理指令中用作隐含的计数器。DX可以作为通用寄存器使用。可以作为通用寄存器使用。一般在做双字长运算时一般在做双字长运算时把把DX和和AX组合在一起存放一个双字长数,组合在一起存放一个双字长数,DX用来存放用来存放高位字。此外,对某些高位字。此外,对某些I/O 操作,操作,DX可用来存放可用来存放I/O 的端的端口地址。口地址。4 SP、BP、DI、SI 这这4个个16位寄存器可以像数据寄存器位寄存器可以像数据寄存器一样在运算过程中存放操作数,但它们只能以字(一样在运算过程中存放操作数,但它们只能以字(16位)位)为单位使用。此外,它们更经常的用途是为单位使用。此外,它们更经常的用途是在存储器寻址时,在存储器寻址时,提供偏移地址。因此,可称它们为指针或变址寄存器。提供偏移地址。因此,可称它们为指针或变址寄存器。(2)指令指针寄存器和标志寄存器)指令指针寄存器和标志寄存器 IP(Instruction Pointer)为指令指针寄存器,它用来)为指令指针寄存器,它用来存放代码段中的偏移地址。存放代码段中的偏移地址。IP作为指令的地址指针,其作作为指令的地址指针,其作用类似于其他计算机中的程序计数器用类似于其他计算机中的程序计数器PC,当现行指令执,当现行指令执行完毕时,由行完毕时,由IP提供下一条指令地址。提供下一条指令地址。FLAGS为标志寄存器,又称为标志寄存器,又称PSW(Program Status Word),即程序状态寄存器。),即程序状态寄存器。这是一个存放条件码标志、这是一个存放条件码标志、控制标志和系统标志的寄存器控制标志和系统标志的寄存器。80386及其后继机型的指令指针寄存器及其后继机型的指令指针寄存器EIP和标志寄存和标志寄存器器EFLAGS是是32位的,其作用和相应的位的,其作用和相应的16位寄存器相同。位寄存器相同。5下图说明了下图说明了80 x86 CPU中标志寄存器的内容中标志寄存器的内容:6 条件码标志包括以下条件码标志包括以下6位:位:OF(Over Flow Flag)溢出标志。溢出标志。将参加算术运算的数将参加算术运算的数看作带符号数,如运算结果超出补码表示数的范围看作带符号数,如运算结果超出补码表示数的范围N,即溢出时,则,即溢出时,则OF置置1;否则;否则OF置置0。对于字节运算有。对于字节运算有 128N+127;对于字运算有;对于字运算有 32768N+32767。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。AF可用于十进制运算的校正可用于十进制运算的校正。PF(Parity Flag)奇偶标志。奇偶标志。用来为机器中传送信息时可用来为机器中传送信息时可能产生的代码出错情况提供检验条件。当运算结果中能产生的代码出错情况提供检验条件。当运算结果中1的个数为偶数的个数为偶数时置时置1,否则置,否则置0。7 控制标志位控制标志位1位位 DF(Direction Flag)方向标志,用来在串处理指令)方向标志,用来在串处理指令中控制处理信息的方向。中控制处理信息的方向。当当DF位为位为1时,每次操作后使变时,每次操作后使变址寄存器址寄存器SI和和DI减小,这样就使串处理从高地址向低地址减小,这样就使串处理从高地址向低地址方向处理。当方向处理。当DF位为位为0时,则使时,则使SI和和DI增大,使串处理从增大,使串处理从低地址向高地址方向处理。低地址向高地址方向处理。系统标志位有系统标志位有10位:位:TF(Trap Flag)陷阱标志陷阱标志,用于调试时的单步方式,用于调试时的单步方式操作。操作。IF(Interrupt Flag)中断标志中断标志。IOPL(I/O Privilege Level)I/O特权级标志特权级标志。NT(Nested Task)嵌套任务标志嵌套任务标志,用来表示当前的,用来表示当前的任务是否嵌套在另一任务内。任务是否嵌套在另一任务内。8 RF(Resume Flag)恢复标志位,恢复标志位,它与调试寄存器的它与调试寄存器的断点一起使用,以保证不重复处理断点。断点一起使用,以保证不重复处理断点。VM(Virtual-8086 Mode)虚拟虚拟8086模式位模式位。AC(Alignment Check mode)对准检查方式位对准检查方式位。VIF(Virtual Interrupt Flag)虚拟中断标志。虚拟中断标志。VIP(Virtual Interrupt Pending flag)虚拟中断未决虚拟中断未决标志。标志。ID(IDentification flag)标识标志,标识标志,程序有设置和程序有设置和清除清除ID标识的能力,以指示处理机对标识的能力,以指示处理机对CPU ID指令的支持。指令的支持。9 在调试程序在调试程序DEBUG中提供了测试标志位的手段,它中提供了测试标志位的手段,它用符号表示某些标志位的值:用符号表示某些标志位的值:标志名标志名标志为标志为1标志为标志为0 OF 溢出(是溢出(是/否)否)OVNV DF 方向(增量方向(增量/减量)减量)DNUP IF 中断(允许中断(允许/关闭)关闭)EIDI SF 符号(正符号(正/负)负)NGPL ZF 零(是零(是/否)否)ZRNZ AF 辅助进位(是辅助进位(是/否)否)ACNA PF 奇偶(偶奇偶(偶/奇)奇)PEPO CF 进位(是进位(是/否)否)CYNC10(3)段寄存器)段寄存器 段寄存器用于存储器寻址,用来直接或间接地存放段段寄存器用于存储器寻址,用来直接或间接地存放段地址。段寄存器的长度为地址。段寄存器的长度为16位,在位,在80286以前的处理器中,以前的处理器中,只有代码段只有代码段CS(Code Segment)、数据段)、数据段DS(Data Segment)、堆栈段)、堆栈段SS(Stack Segment)和附加段)和附加段ES(Extra Segment)4个寄存器。从个寄存器。从80386起,增加了起,增加了FS和和GS两个段寄存器,它们也属于附加的数据段。有关段两个段寄存器,它们也属于附加的数据段。有关段寄存器的使用将在下一节中说明。寄存器的使用将在下一节中说明。114.2.2 80 x86的主存储器的主存储器 1存储单元的地址和内容存储单元的地址和内容 每每8位二进制数组成一个字节,位编号位二进制数组成一个字节,位编号如图(如图(a)所示。)所示。8086、80286的字长为的字长为16位,由两个字节组成,位编号如图(位,由两个字节组成,位编号如图(b)所)所示。示。80386Pentium机的字长为机的字长为32位,由位,由两个字即两个字即4个字节组成,在个字节组成,在80 x86系列中称系列中称其为双字,位编号如图(其为双字,位编号如图(c)所示。此外,)所示。此外,还有一种由还有一种由8个字节即字长为个字节即字长为64位组成的位组成的4字,位编号如图(字,位编号如图(d)所示。)所示。12 在存储器里以字节为单位存储信息。为了正确地存放或取在存储器里以字节为单位存储信息。为了正确地存放或取得信息,每一个字节单元给予一个唯一的编号即存储器地址,得信息,每一个字节单元给予一个唯一的编号即存储器地址,称为称为物理地址物理地址。地址从。地址从0开始编号,顺序地每次加开始编号,顺序地每次加1,因此存储,因此存储器的物理地址空间呈线性增长。在机器里,地址也是用二进制器的物理地址空间呈线性增长。在机器里,地址也是用二进制数来表示的。当然它是无符号整数,书写格式为十六进制数。数来表示的。当然它是无符号整数,书写格式为十六进制数。8086/8088的的地址总线地址总线20位:位:可访问的字节单元地址范围为可访问的字节单元地址范围为00000HFFFFFH;80286的的地址总线地址总线24位:位:可访问的地址范围为可访问的地址范围为000000HFFFFFFH;80386/80486和和Pentium地址总线地址总线32位:位:地址范围为地址范围为00000000HFFFFFFFFH;Pentium Pro和和P地址总线地址总线36位:位:地址范围为地址范围为000000000HFFFFFFFFFH。13 一个存储单元中存放的信息称为该存储单元的内容,一个存储单元中存放的信息称为该存储单元的内容,右图表示了存储器里存放信息的情况。右图表示了存储器里存放信息的情况。0004H号字节单元中存放的信息为号字节单元中存放的信息为78H,表示为:表示为:(0004H)=78H 两两个个字字节节单单元元就就构构成成了了一一个个字字单单元元,字字单单元元的的地地址址采采用用它它的的低低地地址址来来表表示示。右右图图中中00040004H H字字单单元元的的内内容容为为56785678H H,表示为表示为 (00040004H H)=5678H=5678H 双字单元的地址由其最低字节的地址指定,因此双字单元的地址由其最低字节的地址指定,因此0004H双字单元的内容为:双字单元的内容为:(0004H)=12345678H。14 2实模式存储器寻址实模式存储器寻址 80 x86中除中除8086/8088只能在实模式下工作外,其他的只能在实模式下工作外,其他的CPU均可在实模式或保护模式下工作。均可在实模式或保护模式下工作。(1)存储器的分段)存储器的分段 实模式下允许的最大寻址空间为实模式下允许的最大寻址空间为1 MB。8086/8088的地的地址总线宽度为址总线宽度为20位,因而其最大寻址空间正好是位,因而其最大寻址空间正好是1MB。在在1MB的存储器里,每个存储单元都有一个唯一的的存储器里,每个存储单元都有一个唯一的20位地址,位地址,称为物理地址。称为物理地址。而对于其他微处理器在实模式下只能访问而对于其他微处理器在实模式下只能访问前前1 MB的存储器地址。的存储器地址。15 实模式就是为实模式就是为8086/8088而设计的工作方式,它要解决在而设计的工作方式,它要解决在16位字长的机器里怎么提位字长的机器里怎么提供供20位地址的问题,而解决的办法是:将位地址的问题,而解决的办法是:将1 MB主存空间划分为若干段,每个段的最大主存空间划分为若干段,每个段的最大长度为长度为64 KB单元,这样段内地址可以用单元,这样段内地址可以用16位表示。如果能再提供段的位表示。如果能再提供段的20位起始地址,位起始地址,那么通过这两个地址就可以访问段内任何一个存储单元。因此,在那么通过这两个地址就可以访问段内任何一个存储单元。因此,在CPU中设置的段寄中设置的段寄存器只有存器只有16位,只能存放位,只能存放20位段起始地址的高位段起始地址的高16位,称它为位,称它为段基值(段基值(Segment Base Value),而机器将段起始地址的低而机器将段起始地址的低4位设置为位设置为0。故将段基值左移。故将段基值左移4位后(即末尾加位后(即末尾加4位位二进制数二进制数0),就得到一个),就得到一个20位的段起始地址,称它为位的段起始地址,称它为段基地址或段基址(段基地址或段基址(Segment Base Address)。显然,段基址为显然,段基址为xxxx0H,其低其低4位二进制数为位二进制数为0,即能被,即能被16整除的主整除的主存物理地址才可作为段基址。存物理地址才可作为段基址。段内地址即段内地址即偏移地址偏移地址,它是一个主存单元与所在段的段基址之间的字节距离,通常,它是一个主存单元与所在段的段基址之间的字节距离,通常由由CPU按指令的寻址方式计算得到或由指令指针按指令的寻址方式计算得到或由指令指针IP提供,又称为提供,又称为有效地址有效地址。当。当CPU访问某访问某个主存单元时,必须指明由哪个段寄存器提供段基值,同时给出偏移地址。然后将个主存单元时,必须指明由哪个段寄存器提供段基值,同时给出偏移地址。然后将16位段位段基值左移基值左移4位后与位后与16位偏移地址相加,形成位偏移地址相加,形成20位主存单元的物理地址,这一过程可以表示位主存单元的物理地址,这一过程可以表示如下:如下:16实模式存储器寻址过程如下图所示:实模式存储器寻址过程如下图所示:17(2)段寄存器)段寄存器 在在808680286中,有中,有4个专门存放段基值的寄存器,称个专门存放段基值的寄存器,称为段寄存器。它们分别是为段寄存器。它们分别是代码段代码段CS、数据段、数据段DS、堆栈段、堆栈段SS和和附加段附加段ES寄存器寄存器。每个段寄存器可以确定一个段的起始地址,而这些段则各每个段寄存器可以确定一个段的起始地址,而这些段则各有各的用途。有各的用途。代码段存放当前正在运行的程序。数据段存放当代码段存放当前正在运行的程序。数据段存放当前运行程序所用的数据。堆栈段定义了堆栈的所在区域。附加前运行程序所用的数据。堆栈段定义了堆栈的所在区域。附加段是附加的数据段,它是一个辅助的数据区,也是串处理指令段是附加的数据段,它是一个辅助的数据区,也是串处理指令的目的操作数存放区。的目的操作数存放区。在在80386及其后继的及其后继的80 x86中,除上述中,除上述4个段寄存器外,又个段寄存器外,又增加了增加了2个段寄存器个段寄存器FS和和GS,它们也是附加的数据段寄存器,它们也是附加的数据段寄存器,所以所以808680286的程序允许的程序允许4个存储段,而后继的个存储段,而后继的80 x86程序程序可允许可允许6个存储段。个存储段。18 一般情况下,各段在存储器一般情况下,各段在存储器中的分配是由操作系统负责的。中的分配是由操作系统负责的。每个段可以独立地占用小于或每个段可以独立地占用小于或等于等于64 KB的存储区,如右图所的存储区,如右图所示。示。19 【例例】如果代码段中的程序占有如果代码段中的程序占有8 KB(2000H)存储区,数据段占有)存储区,数据段占有2 KB(800H)存储区,堆栈段只占有)存储区,堆栈段只占有256 B的存储区,此时段区的分配如右的存储区,此时段区的分配如右图所示。图所示。从图中可以看出,代码段的区域可从图中可以看出,代码段的区域可以是以是02000H03FFFH,但由于程序区,但由于程序区只需要只需要8 KB,所以程序区结束后的第,所以程序区结束后的第一个小段的首地址就作为数据段的起始一个小段的首地址就作为数据段的起始地址。也就是说,在这里,代码段和数地址。也就是说,在这里,代码段和数据段可以重叠在一起。当然每个存储单据段可以重叠在一起。当然每个存储单元的内容是不允许发生冲突的。这里所元的内容是不允许发生冲突的。这里所谓的重叠只是指每个段区的大小允许根谓的重叠只是指每个段区的大小允许根据实际需要来分配,而不一定要占有据实际需要来分配,而不一定要占有64 KB的最大段空间。的最大段空间。20 在在80 x86中,段寄存器和与其对应存放偏移地址中,段寄存器和与其对应存放偏移地址的寄存器之间有一种默认的组合关系,如下表所示的寄存器之间有一种默认的组合关系,如下表所示:8086/8088、80286:段寄存器段寄存器 偏移地址偏移地址CSIPSSSP或或BPDSBX、SI、DI或一个或一个16位数位数ESDI(用于串指令)(用于串指令)80386及其后继机型:及其后继机型:段寄存器段寄存器 偏移地址偏移地址CSEIPSSESP或或EBPDSEAX、EBX、ECX、EDX、EDI、ESI、一个、一个8或或32位数位数ESEDI(用于串指令)(用于串指令)FS无默认无默认GS无默认无默认213保护模式存储器寻址保护模式存储器寻址 (1)逻辑地址)逻辑地址 在保护模式存储器寻址中在保护模式存储器寻址中,程序员在程序中指定逻,程序员在程序中指定逻辑地址,辑地址,CPU采用一种比较复杂的方法来求得相应的物采用一种比较复杂的方法来求得相应的物理地址。在保护模式下,逻辑地址由段选择器和偏移地址理地址。在保护模式下,逻辑地址由段选择器和偏移地址两部分组成,段选择器存放在段寄存器中,但它不能直接两部分组成,段选择器存放在段寄存器中,但它不能直接确定段基址,而由确定段基址,而由CPU通过一定的方法取得段基址,再和通过一定的方法取得段基址,再和偏移地址相加,从而求得所选存储单元的线性地址,线性偏移地址相加,从而求得所选存储单元的线性地址,线性地址再通过分页部件转换成物理地址。地址再通过分页部件转换成物理地址。22 下图为保护模式存储器寻址示意图。可以看出,它和实模下图为保护模式存储器寻址示意图。可以看出,它和实模式寻址的另一个区别是:偏移地址为式寻址的另一个区别是:偏移地址为32位,最大段长可从位,最大段长可从64 KB扩大到扩大到4 GB。23 (2)描述符)描述符 段选择器是通过描述符表取得描述符,从而得到段基段选择器是通过描述符表取得描述符,从而得到段基址的。址的。描述符有描述符有8个字节长,用来说明段的起始地址、段个字节长,用来说明段的起始地址、段的大小、段在存储器中的位置及有关的控制和状态信息,的大小、段在存储器中的位置及有关的控制和状态信息,其格式如下图所示其格式如下图所示:24描述符由描述符由段基址、段界限、访问权段基址、段界限、访问权和和附加字段附加字段4部分组成。部分组成。段基址(段基址(Base)用来指定段的起始地址。用来指定段的起始地址。80386以上处理器以上处理器的段基址为的段基址为32位,说明段可以从位,说明段可以从4 GB存储器的任何地址开始。存储器的任何地址开始。段界限(段界限(Limit)用来存放该段的段长度。用来存放该段的段长度。80386及其后继及其后继机型的段界限为机型的段界限为20位,同时在其描述符中又给出了一个位,同时在其描述符中又给出了一个粒度位粒度位G(Granularity)。当)。当G=0时,段长的粒度单位为字节,这样时,段长的粒度单位为字节,这样20位段界限可使段长从位段界限可使段长从1 B到到1 MB,步距为,步距为1 B;当;当G=1时,段时,段长的粒度单位为页,每页为长的粒度单位为页,每页为4 KB,所以,所以20位段界限可定义的段位段界限可定义的段长从长从1 4 KB到到1 M 4 KB,即从,即从4 KB到到4 GB,步距,步距为为4 KB。25 访问权(访问权(Access Rights)有有8位,所以又称为访问权字节位,所以又称为访问权字节,用来说明该段在系统中的功能,并给出访问该段的一些控制信用来说明该段在系统中的功能,并给出访问该段的一些控制信息。应用程序的访问权字节可表示如下:息。应用程序的访问权字节可表示如下:P(Present)存在位:存在位:P=1说明该段已装入物理存储器,其段基址和段界限说明该段已装入物理存储器,其段基址和段界限值有效;值有效;P=0则说明该段并未装入物理存储器,段基址和段界限值无用则说明该段并未装入物理存储器,段基址和段界限值无用。DPL(Descriptor Privilege Level)描述符特权级字段描述符特权级字段 2位,用来指定该存储位,用来指定该存储段的特权级段的特权级03,0级为最高特权级。级为最高特权级。S(Segment Descriptor)段描述符位:段描述符位:S=0表示该段为系统段;表示该段为系统段;S=1则表则表示该段为应用程序的代码段或数据(包括堆栈)段。示该段为应用程序的代码段或数据(包括堆栈)段。访问权字节的访问权字节的1,2,3位组成类型字段,说明该段的类型。在系统段(位组成类型字段,说明该段的类型。在系统段(S=0)和应用程序代码段或数据段()和应用程序代码段或数据段(S=1)两种不同的情况下,对于类型字段的解)两种不同的情况下,对于类型字段的解释并不相同。释并不相同。A(Accessed)已访问位:已访问位:A=0表示该段尚未被访问过;表示该段尚未被访问过;A=1表示该段已被表示该段已被访问过。此时的段选择器已装入段寄存器或该段已用于段选择器测试指令。该位访问过。此时的段选择器已装入段寄存器或该段已用于段选择器测试指令。该位的设立便于软件对段使用情况的监控。的设立便于软件对段使用情况的监控。26 附加字段部分附加字段部分在在386及其后继机型中存在,它们包括及其后继机型中存在,它们包括G、D/B、0和和AVL 共共4位。位。G为粒度位:为粒度位:前面已有说明。前面已有说明。D/B位:位:在代码段里,该位称为在代码段里,该位称为D(Default Operation Size)默认操作长度位。)默认操作长度位。D=1表示操作数及有效地址长度均表示操作数及有效地址长度均为为32位;位;D=0则为则为16位操作数和位操作数和16位有效地址。位有效地址。0位位:该位必须为:该位必须为0,为未来的处理机保留。,为未来的处理机保留。AVL(Available)可用位:该位只能由系统软件使用。可用位:该位只能由系统软件使用。27 程序只要给出逻辑地址程序只要给出逻辑地址(即段选择器和偏移地址即段选择器和偏移地址)就可找到对就可找到对应的存储单元。此外,我们知道只要有了描述符,就可以根据其应的存储单元。此外,我们知道只要有了描述符,就可以根据其给出的段基址和段界限值,确定所要找的存储单元所在的段,再给出的段基址和段界限值,确定所要找的存储单元所在的段,再加上逻辑地址中指定的偏移地址,就可以找到相应的存储单元。加上逻辑地址中指定的偏移地址,就可以找到相应的存储单元。剩下的问题是,如何根据段选择器找到描述符呢剩下的问题是,如何根据段选择器找到描述符呢?(3)段选择器和描述符表)段选择器和描述符表描述符存放在描述符表中,主要有描述符存放在描述符表中,主要有4种描述符表:种描述符表:全局描述符表全局描述符表GDT(Global Descriptor Table)用于存放操作系用于存放操作系统和各任务公用的描述符,如公用的数据和代码段描述符、各个任务的统和各任务公用的描述符,如公用的数据和代码段描述符、各个任务的TSS描述符和描述符和LDT描述符等。描述符等。局部描述符表局部描述符表LDT(Local Descriptor Table)用于存放各个任务用于存放各个任务私有的描述符,如本任务的代码段描述符和数据段描述符等。私有的描述符,如本任务的代码段描述符和数据段描述符等。中断描述符表中断描述符表IDT(Interrupt Descriptor Table)用于存放系统中用于存放系统中断描述符。断描述符。任务状态段任务状态段TSS(Task State Segment)用来存放各个任务的私有用来存放各个任务的私有运行状态信息描述符。运行状态信息描述符。28 描述符表都存放在存储器中,每个表分别构成一个描述符表都存放在存储器中,每个表分别构成一个64 KB长的段,表中可长的段,表中可存放存放8 K个描述符。全局描述符表中的描述符所指定的段可用于所有程序,个描述符。全局描述符表中的描述符所指定的段可用于所有程序,而局部描述符表中的描述符所指定的段通常只用于一个用户程序(或称一个而局部描述符表中的描述符所指定的段通常只用于一个用户程序(或称一个任务)。在整个系统里,只有一个全局描述符表和一个中断描述符表,而局任务)。在整个系统里,只有一个全局描述符表和一个中断描述符表,而局部描述符表可以有多个,它们分别对应于不同的任务。部描述符表可以有多个,它们分别对应于不同的任务。因此,只要段选择器提供描述符在描述符表中的位置,就可以得到描述符。因此,只要段选择器提供描述符在描述符表中的位置,就可以得到描述符。段选择器存放在段寄存器中,段选择器存放在段寄存器中,16位长,其格式如下:位长,其格式如下:INDEX为索引值为索引值,即描述符表索引值,它给出所选描述符在描述符表中的地,即描述符表索引值,它给出所选描述符在描述符表中的地址。该字段共址。该字段共13位,可从表中位,可从表中8K个描述符中选取一个。个描述符中选取一个。RPL(Requested Privilege Level)为请求特权级)为请求特权级,这是对该存储段请求访问,这是对该存储段请求访问的特权级,其值可为的特权级,其值可为03,0级特权级最高。如级特权级最高。如RPL和该段描述符中的和该段描述符中的DPL相相等(同一特权级)或等(同一特权级)或RPLDPL(请求特权级高于描述符特权级)则允许对该(请求特权级高于描述符特权级)则允许对该段的访问。如段的访问。如RPL 2,DPL 3则允许访问该段。则允许访问该段。TI(Table Indicator)为选择位)为选择位,TI 0指示从全局描述符表指示从全局描述符表GDT中选择描述中选择描述符;符;TI 1则指示从局部描述符表则指示从局部描述符表LDT中选择描述符。中选择描述符。29 下图说明了从逻辑地址通过段选择器找到描述符表,再找到下图说明了从逻辑地址通过段选择器找到描述符表,再找到描述符,由此确定所选段和存储单元的过程描述符,由此确定所选段和存储单元的过程:30 每当段寄存器中段选择器的值确定以后,硬件会自动地根据段选择器的索每当段寄存器中段选择器的值确定以后,硬件会自动地根据段选择器的索引值,从系统的描述符表中取出一个引值,从系统的描述符表中取出一个8字节(字节(64位)的描述符,装入到相应的段位)的描述符,装入到相应的段描述符寄存器中,以后每当出现对该段存储器的访问时,就可直接使用相应的描述符寄存器中,以后每当出现对该段存储器的访问时,就可直接使用相应的描述符寄存器中的段基址作为线性地址计算的一个元素,而不需要在内存中查描述符寄存器中的段基址作为线性地址计算的一个元素,而不需要在内存中查表得到段基址,因此加快了存储器物理地址的形成。表得到段基址,因此加快了存储器物理地址的形成。应当指出,应当指出,段寄存器是程序可访问的段寄存器是程序可访问的,而,而描述符寄存器则是程序不可访问描述符寄存器则是程序不可访问的的。为了提高保护模式存储器寻址的速度,为了提高保护模式存储器寻址的速度,CPU中设置了中设置了6个个64位位的描述符寄存器,用来存放对应段的描述符,如下图所示:的描述符寄存器,用来存放对应段的描述符,如下图所示:31(4)系统级寄存器组)系统级寄存器组 系统级寄存器组系统级寄存器组是指不能由用户程序访问而只能由系统是指不能由用户程序访问而只能由系统管理的寄存器,具体包括管理的寄存器,具体包括系统地址寄存器系统地址寄存器、控制寄存器控制寄存器、测测试寄存器试寄存器和和调试寄存器调试寄存器。系统地址寄存器有系统地址寄存器有4个,它们用来保存全局描述符表、局部描个,它们用来保存全局描述符表、局部描述符表、中断描述符表和任务状态段这述符表、中断描述符表和任务状态段这4个系统描述符表所在个系统描述符表所在存储段的段基址、界限和段属性信息,如下图所示:存储段的段基址、界限和段属性信息,如下图所示:32GDTR和和IDTR:这两个寄存器分别用来保存全局描述符表这两个寄存器分别用来保存全局描述符表GDT和和中断描述符表中断描述符表IDT所在段的所在段的32位段基址以及位段基址以及16位的界限值。位的界限值。LDTR和和TR:LDTR寄存器用来存放当前任务的局部描述符表寄存器用来存放当前任务的局部描述符表LDT所在存储段的段选择器及其描述符。所在存储段的段选择器及其描述符。TR寄存器用来存放当寄存器用来存放当前任务状态段前任务状态段TSS所在存储段的段选择器及其描述符。所在存储段的段选择器及其描述符。33 控制寄存器控制寄存器 4个个32位的控制寄存器位的控制寄存器CR0CR3,用来保存全局性,用来保存全局性的机器状态和设置控制位,如下图所示:的机器状态和设置控制位,如下图所示:34 CR0控制寄存器的低控制寄存器的低16位也称为机器的状态字位也称为机器的状态字MSW。CR0的所有控制状态位可分为如下几类:的所有控制状态位可分为如下几类:工作模式控制位工作模式控制位PG、PE;片内高速缓存控制位片内高速缓存控制位CD、NW;浮点运算控制位浮点运算控制位TS、EM、MP、NE;对准控制位对准控制位AM;页的写保护控制位页的写保护控制位WP。35 下面对这些控制位的功能进行简要说明:下面对这些控制位的功能进行简要说明:PE保护方式允许位保护方式允许位 当该位被置当该位被置1时,时,CPU将转移到保护模式工作,将转移到保护模式工作,允许给段实施保护。若允许给段实施保护。若PE位被清位被清0,则,则CPU返回到实地址模式工作。返回到实地址模式工作。MP监视协处理器控制位监视协处理器控制位 当该位被置当该位被置1时,表示有协处理器;否则,时,表示有协处理器;否则,表示没有协处理器。表示没有协处理器。EM仿真协处理器控制位仿真协处理器控制位 当该位被置当该位被置1时,表示用软件仿真协处理时,表示用软件仿真协处理器,而这时器,而这时CPU遇到浮点指令,则产生故障中断遇到浮点指令,则产生故障中断7。如果。如果EM=0,浮点指令将,浮点指令将被执行。被执行。TS任务转换控制位任务转换控制位 每当进行任务转换时,由每当进行任务转换时,由CPU自动将自动将TS置置1。NE数字异常中断控制位数字异常中断控制位 当该位被置当该位被置1时,若执行浮点指令时发生故时,若执行浮点指令时发生故障,进入异常中断障,进入异常中断16处理;否则,进入外部中断处理。处理;否则,进入外部中断处理。WP写保护控制位写保护控制位 当该位被置当该位被置1时,将对系统程序读取的专用页进行时,将对系统程序读取的专用页进行写保护。写保护。AM对准屏蔽控制位对准屏蔽控制位 当该位被置当该位被置1时,且时,且EFLAGS的的AC位有效,将位有效,将对存储器操作数进行对准检查;否则,不进行对准检查。对存储器操作数进行对准检查;否则,不进行对准检查。36NW通写控制位通写控制位 当该位被清当该位被清0时,表示允许时,表示允许Cache通写,即所有命中通写,即所有命中Cache的写操作不仅要写的写操作不仅要写Cache,同时也要写主存储器;否则,禁止,同时也要写主存储器;否则,禁止Cache通通写。写。CD高速缓存允许控制位高速缓存允许控制位 当该位被置当该位被置1,高速缓存未命中时,不允,高速缓存未命中时,不允许填充高速缓存;否则,高速缓存未命中时,允许填充高速缓存。许填充高速缓存;否则,高速缓存未命中时,允许填充高速缓存。PG允许分页控制位允许分页控制位 当该位被置当该位被置1时,允许分页;否则,禁止分页。时,允许分页;否则,禁止分页。CR1控制存储器控制存储器保留给将来的保留给将来的Intel微处理器使用。微处理器使用。CR2控制控制寄存器寄存器为页故障线性地址寄存器,它保存的是最后出现页故障的为页故障线性地址寄存器,它保存的是最后出现页故障的32位线性地址。位线性地址。CR3中的高中的高20位为页目录表的段基址寄存器。位为页目录表的段基址寄存器。37 测试寄存器测试寄存器 测试寄存器有测试寄存器有5个。其中个。其中TR3TR5,用于高速缓存的测试操,用于高速缓存的测试操作(测试数据、测试状态、测试控制),作(测试数据、测试状态、测试控制),TR6TR7则用于页部则用于页部件的测试操作(测试控制、测试状态)。件的测试操作(测试控制、测试状态)。调试寄存器调试寄存器 8个个32位的调试寄存器位的调试寄存器DR0DR7,用来支持,用来支持80386及后继机及后继机型的调试功能。其中型的调试功能。其中DR0DR3用来设置用来设置4个断点的线性地址,个断点的线性地址,DR6用来存放断点的状态,用来存放断点的状态,DR7用于设置断点控制,而用于设置断点控制,而DR4和和DR5则是则是Intel公司保留以后使用。公司保留以后使用。38480 x86 CPU逻辑地址的来源逻辑地址的来源 从以上内容可知,实模式下的逻辑地址由段基值和偏从以上内容可知,实模式下的逻辑地址由段基值和偏移地址组成;而保护模式下的逻辑地址由段选择器和偏移移地址组成;而保护模式下的逻辑地址由段选择器和偏移地址组成。实际上段基值和选择器都是由段寄存器提供。地址组成。实际上段基值和选择器都是由段寄存器提供。在汇编语言程序中,逻辑地址可表示为:在汇编语言程序中,逻辑地址可表示为:段基值(或段选择器):偏移地址段基值(或段选择器):偏移地址 在在80 x86 CPU中,逻辑地址的两个分量之间存在一种默中,逻辑地址的两个分量之间存在一种默认组合关系,可以不在程序中指明。这种默认组合取决于认组合关系,可以不在程序中指明。这种默认组合取决于指令所需的操作类型,表指令所需的操作类型,表4-3给出了不同操作类型,获得段给出了不同操作类型,获得段基值(或段选择器)和偏移地址的不同来源。基值(或段选择器)和偏移地址的不同来源。39表表4-3 4-3 逻辑地址的两个分量的默地址的两个分量的默认组合关系合关系序序号号操操 作作 类类 型型逻逻 辑辑 地地

    注意事项

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

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




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

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

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

    收起
    展开