Intel80x86系列微处理器课件_第1页
Intel80x86系列微处理器课件_第2页
Intel80x86系列微处理器课件_第3页
Intel80x86系列微处理器课件_第4页
Intel80x86系列微处理器课件_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

Intel80x86系列微处理器

2.1IntelCPU的发展4位CPU:4004

45条指令执行速度为50kIPS8位CPU:8008、8080执行速度达到500KIPS寻址范围达到64KB

16位CPU:8086、8088、80286

16位CPU,能够进行16位数据的运算和处理寻址范围达到1MB

32位CPU:80386、80486

准64位CPU:Pentium、PⅡ、PⅢ、P464位CPU:Itanium2.2PC机操作系统的发展

PC机操作系统主要有以下系列:2.2.1MS-DOS2.2.2桌面Windows系统2.2.3WindowsNT系列2.2.4Linux2.316位CPU及DOS基础

8086/8088CPU按功能可分成两大部分:总线接口单元BIU(BusInterfaceUnit)执行单元EU(ExecutionUnit)8086一次可存取2字节,比8088的性能要高8088微处理器的内部结构如图所示。(下页)

内存接口C-BUSAHALBHBLCHCLDHDLSPBPSIDIESCSSSDSIP

总线接口单元执行单元指令执行队列执行单元控制系统

A-BUS算术/逻辑单元标志寄存器标志寄存器2.3.1执行单元

执行单元主要包括标志寄存器Flags、算术逻辑单元ALU、通用寄存器。执行单元主要实现两种操作:一是根据指令进行算术逻辑等运算二是给出程序要访问的内存单元地址,交给总线接口单元

2.3.2总线接口单元负责CPU与存储器和外设之间的信息传送由地址加法器、段寄存器(CS,DS,ES,SS)、指令指针IP、指令队列和总线控制逻辑组成。在执行单元执行指令的过程中,总线接口单元负责从内存指定部分取出指令送至指令队列中排队。在执行指令时,所需要的内存操作数也是由总线接口单元从内存的指定区域取出传送给执行单元。

总线接口单元中指示器IP的作用及用法保存着下一次将要从内存中取出的指令的偏移地址根据IP的内容(16位)和段寄存器CS的内容(16位)形成指令的物理地址(20位)根据该地址从主存中取出指令,送入指令队列中排队指令执行完毕后IP增加,指向下一条要执行的指令。2.3.3寄存器

GS

CS

SS

DS

ES

FS代码段寄存器堆栈段寄存器数据段寄存器附加段寄存器段寄存器1615

CHCL (AH)AX(AL)

EAX

EBX (CH)CX(CL)

ECX(DH)DX(DL)

EDX位08731

AHAL

SP

ESP

AHAL

BP

EBP

AHAL

SI

ESI

DI

EDI

IP

EIP(BH)BX(BL)

FLAGS数据寄存器堆栈指针基址指针源变址目的变址指令指针标志指针寄存器变址寄存器控制寄存器通用寄存器

FLAGS1.段寄存器(CS,DS,ES,SS)

段寄存器用来确定该段在内存中的起始地址。包括:代码段寄存器CS数据段寄存器DS堆栈段寄存器SS附加数据段寄存器ES

2.指令指针IP

指令指针IP总是保存下一次将要执行的指令的偏移地址,偏移地址指的是这条指令在代码段中的位置。在程序运行时,IP的内容由CPU自动调整。3.堆栈指针SP

堆栈指针寄存器SP用于存放当前堆栈段中栈顶的偏移地址。

4.数据寄存器AX,BX,CX,DX数据寄存器通常用来保存操作数或运算结果等信息,也有如下专门用途。AX寄存器称为累加器,它的使用频度最高,用于算术、逻辑运算以及与外设传送信息等。BX寄存器称为基址寄存器,可用于存放存储器地址。CX寄存器称为计数器,可作为循环或串操作等指令中的隐含计数器。DX寄存器称为数据寄存器,可用来存放双字数据的高16位,或存放外设端口地址。

AX,BX,CX,DX都是16位的寄存器,每一个又可以分为高8位和低8位来使用。例如:AX的值为0E9FH,那么,AH=0EH,AL=9FH

。15870AXAHALBXBHBLCXCHCLDXDHDL5.基址寄存器BP

基址寄存器可用来保存操作数或运算结果等信息也用于存放某一存储单元的偏移地址,此时多用于对堆栈段中数据的非顺序存取BX寄存器也是基址寄存器。

6.变址寄存器SI,DISI是源变址寄存器,DI是目标变址寄存器可用来保存操作数或运算结果等信息也用于存放某一存储单元的偏移地址在数据块操作中,SI和DI分别指向源地址和目标地址。

7.标志寄存器Flags包含9个标志位,表示CPU所处状态信息及运算结果的特征,在执行指令的过程中,根据指令执行的结果自动改变这些标志位,在程序中可以取出这些标志位标志寄存器如下图

1514131211109876543210FlagsOFDFIFTFSFZFAFPFCF标志寄存器辅助进位标志AF:在字操作时若低位字节向高位字节有进位或借位时,则AF=1,否则AF=0。进位标志CF:当结果的最高位产生一个进位或借位时,CF=1,否则CF=0。在移位或循环移位指令中,会把操作数的最高位(左移时)或最低位(右移时)移入CF中。标志寄存器溢出标志OF:有符号数运算时,当其运算结果超出了8位或16位有符号数所能表达的范围时,将产生溢出,置OF为1,否则置OF=0。符号标志SF:它与运算结果的最高位相同。奇偶标志PF:当执行结果的低8位中1的个数为奇数时,PF为0;否则为1。标志寄存器零标志:当运算结果为零时,ZF为1;否则为0。方向标志DF:在字符串操作指令中,当DF=0时,串操作为自动增址;当DF=1时,串操作为自动减址。标志寄存器中断允许标志:当IF=1时,允许CPU接收外部中断请求,此时为“开中断”状态。当IF=0时,则屏蔽外部中断请求,此时为“关中断”状态。单步标志TF:当TF=1时,CPU进入单步方式,在每条指令执行以后产生一个内部中断(单步中断)。当TF=0时,CPU执行指令后不产生单步中断。

2.3.4存储器的分段CPU在确定一个内存单元的地址时,用逻辑地址来描述逻辑地址分为两部分:段首址和偏移,逻辑地址的格式表示为:段首址:偏移

由逻辑地址“段首址:偏移”转换为物理地址的公式为物理地址

段首址

16

偏移

段基址

偏移如,求出317FH:2B83H的物理地址的过程为:段首址

317FH偏移

2B83H段基址

317FH

16

317FH

10H

317F0H物理地址

段基址

偏移

317F0H

2B83H

34373H2.3.5DOS的内存布局

DOS操作系统运行于实模式中,CPU在实模式下的寻址范围只有1MB。

系统硬件使用的内存位于地址区域的高端,范围从A0000H~FFFFFH,共384KB,其中有用于显示的视频缓冲区和BIOS程序空间。DOS系统和程序使用16位“段首址:偏移”的格式,只能使用00000H~9FFFFH共640KB,这就是有名的“640KB”限制。突破限制的方法一种技术是使用高端内存区HMA,它利用了80286以上CPU的A20地址线。第二种方法师利用UMB/EMS/XMS技术,能够使程序使用到更多的物理内存。1.UMB使用的映射是固定的2.EMS将高于1MB的各个16KB内存块进行编号,程序可以设置一个号码,把对应的内存块映射到地址上。如果想使用另外一个16KB内存块,则设置一个新的号码。突破限制的方法(续)UMB/EMS技术只能在80386及以上的CPU才能实现。3.XMS技术能够在80286及以上的CPU中实现。它的原理是在640KB内存中开辟一个缓冲区,再调用XMS功能将缓冲区中的内容传送到高于1MB的内存中去,也可以将高于1MB的内存传送到缓冲区中。

2.3.6I/O地址空间CPU需要和外部设备之间执行输入/输出操作。每个外部设备的接口中都有一组寄存器,用来存放要和CPU相交换的数据、状态和命令信息。每个寄存器都有一个端口地址,由这些端口地址组成了I/O地址空间。

I/O地址空间为64KB,寻址范围为0000H~FFFFH。

2.432位CPU及Windows基础2.4.1三种工作模式2.4.2寄存器2.4.3Windows应用程序的内存布局2.4.4Windows的保护机制

2.4.1三种工作模式

80386处理器有三种工作模式:实模式、保护模式和虚拟86模式。

<1>实模式

CPU复位或加电的时候以实模式启动,处理器以实模式工作。所有的段都是可以读、写和可执行的没有特权级的概念,所有的指令都工作在最高的特权级。不支持硬件上的多任务切换,所有的指令都在同一个环境下执行。

<2>保护模式在保护模式下的时候,80386提供了多任务、内存分段分页管理和特权级保护等功能。段的大小可以设置为4GB,段内的偏移量为32位。在编程时不必考虑内存的分段问题。特权级保护,将应用程序和操作系统隔离起来。支持虚拟内存。支持多任务。<3>虚拟86模式

以任务形式在保护模式下执行的;在虚拟86模式下,80386支持任务切换和内存分页。在Windows操作系统中,有一部分程序专门用来管理虚拟86模式的任务,称为虚拟86管理程序。它既提供了一个环境,允许DOS及其程序在保护模式下运行,又对DOS及其程序的行为进行限制。2.4.2寄存器32位CPU支持的寄存器有以下几种:1.通用32位寄存器2.标志寄存器3.EIP和ESP

4.CS,DS,ES,SS,FS,GS1.通用32位寄存器CPU中有8个32位寄存器。它们主要用于算术运算、逻辑运算以及对内存操作数的寻址。3216150EAXAXEBXBXECXCXEDXDXESISIEDIDIEBPBPESPSP2.标志寄存器

标志寄存器EFLAGS也扩展为32位。31~191817161514131211109876543210EFLAGS00..00VMRFNTIOPLOFDFIFTFSFZFAFPFCF

86模式位VM:此位为1时,表示当前CPU正工作在V86模式下。此位为0,表示当前CPU工作在实模式或保护模式下。嵌套任务位NT:若当前的任务嵌套在其他任务中,此位为1,否则为0。恢复位RF:与程序调试有关的一个控制位。I/O域IOPL:IOPL占2位,取值为0,1,2,3。它规定了那些特权级的程序可以执行I/O指令。

3.指令指针寄存器EIP和堆栈指针寄存器ESP指令指针寄存器总是保存下一次将要执行的指令的偏移地址,偏移地址指这条指令在代码段中的位置。堆栈指针寄存器ESP用于存放当前堆栈段中栈顶的偏移地址。EIP和ESP都32位寄存器,它们的低16位分别是IP和SP。3116150EIPIPESPSP

4.段寄存器CS,DS,ES,SS,FS,GS32位CPU有6个段寄存器,分别为CS,DS,ES,SS,FS,GS,比16位CPU增加了FS、GS两个段寄存器。这些段寄存器也是16位的,在实模式下,它们的用法和16位CPU相同。在实模式和V86模式下,段寄存器的内容是20位段基址的高16位。在保护模式下,段寄存器中的内容是一个选择符,用于在段描述符表中选择段描述符的选择符。2.4.3Windows应用程序的内存布局1.虚拟内存2.“平坦”内存模式3.段寄存器4.内存布局

1.虚拟内存

Windows系统一般在硬盘上建立一个交换文件用做虚拟内存。在读写这个内存地址时,CPU要通知操作系统将交换文件的内容读入物理内存。如果内存紧张,操作系统还可以将物理内存的内容写到交换文件中,以后程序在访问这个地址时,要从交换文件中读入。

2.“平坦”内存模式程序员在编程时可以使用的内存空间最大是4GB,而不必考虑内存的分段问题。

3.段寄存器

在Windows系统中,段寄存器仍然是16位的。他们内容就不再像实模式那样存放段首址的内容,而是存放选择符。选择符指向一个64位的描述符,在描述符中规定了段的基地址、长度、类型、特权级等信息。例如,在一个程序的运行过程中,各个段寄存器和其他寄存器的值为:

3.段寄存器(续)CS:EIP=001B:3017FFD2SS:ESP=0023:0012F16CEAX=00000002EBX=00E903C8ECX=00E903C8EDX=00000DE4ESI=0012F736EDI=00000DE4EBP=0012F180EFL=00000202DS=0023ES=0023FS=003BGS=0000再观察各个段的基地址和长度信息::gdt001BSel.Type Base LimitDPL Attributes001BCode32 00000000FFFFFFFF3 PRE:gdt0023Sel.Type Base Limit DPL Attributes0023Data32 00000000FFFFFFFF3 PRW3.段寄存器(续)程序中,CS=001BH,001BH是一个索引。以这个索引为依据到GDT表中去找这个段的描述符,再从描述符中获得它的基地址为00000000H,长度为FFFFFFFFH。这个段的属性为RE,可读,但不可写。DS=ES=SS=0023H,数据段和堆栈段是同一个段。数据段的属性为RW,可读可写,但不可执行。代码段和数据/堆栈段的空间是统一的,都是00000000H~FFFFFFFFH。

在这个地址空间中,一部分用来存放程序,一部分作为数据区,还有一部分作为堆栈来使用,且不重复。

4.内存布局Windows系统将4GB内存地址空间分为两个部分:用户地址空间和系统地址空间,这两个部分各占2GB。对于每一个任务,它的用户地址空间是独有的。而所有的任务共享系统地址空间,操作系统内核及各种设备的驱动程序都放在系统地址空间中。举例说明各个任务的独立地址空间程序清单:task1.c(任务独立地址空间)结果:main=0x00401005&random=0x0042ADB0,random=0&random=0x0042ADB0,random=27443程序清单:task2.c(任务独立地址空间)结果:main=0x00401005&ticks=0x00428C3C,ticks=0&ticks=0x00428C3C,ticks=11553031举例说明各个任务的独立地址空间(续)执行下面的命令可以编译task1.c,task2.c,生成task1.exe,task2.exe文件。cltask1.ccltask2.ctask1.c程序中设置了一个random全局变量,用于存放获得的随机数,每次运行时这个数字是不同的。task2.c程序中设置了一个ticks全局变量,用于存放Windows启动后已运行的毫秒数,这个数字是不断变化的。举例说明各个任务的独立地址空间(续在“开始→运行”中输入运行c:\asm\task1.exe和c:\asm\task2.exe各两次,一共产生了4个任务。自己验证。对task1.exe的两个任务来说,逻辑地址00408A10H表示的内存单元在两个任务中的值并不相同。这就意味着在Windows系统中,每个任务都有它自己独立的逻辑地址空间。对task2.exe的两个任务来说,逻辑地址004068F0H表示的内存单元在两个任务中的值也不相同,它们被映

温馨提示

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

评论

0/150

提交评论