资源描述
v寄存器v存储器分段及地址v堆栈v微处理器的工作模式v发展新技术1GSFSSSESDSCSFLAGSIPDISIBPSPDLCLBLALDHCHBHAHEDXECXEBXEAXEDIESIEBPESPEFLAGSEIP31150DXCXBXAX 80 x86/Pentium处理器的寄存器模型处理器的寄存器模型 2v EIP是一个专用寄存器,用于寻址当前需要取出的指令字节。当CPU从内存中取出一个指令字节后,EIP就自动加1,指向下一指令字节。当微处理器工作在实模式下时,这个寄存器为IP(16位);当80386及更高型号的微处理器工作于保护模式下时,则是EIP(32位)。v 程序员不能对EIP/IP进行存取操作。程序中的转移指令、返回指令以及中断处理能对EIP/IP进行操作。3.8086/8088标志寄存器的格式及各位的功能标志寄存器的格式及各位的功能1514131211109876543210OFDFIFTFSFZFAFPFCF状状态态标标志志方向标志中断标志跟踪标志Trace Flag控控制制标标志志进位标志奇偶标志半进位标志零标志符号标志溢出标志4v六个状态标志的功能简述如下:六个状态标志的功能简述如下:v(1)进位标志CF(Carry Flag):当执行算术运算指令时,其结果的最高位最高位有进位或借位时将CF置1;否则将CF置0。v(2)奇偶标志PF(Parity Flag):该标志位反映操作结果低8位中“1”的个数情况,若为偶数个“1”,则将PF置“1”;若为奇数个“1”,则将PF置“0”。v(3)辅助进位标志AF(Auxiliary carry Flag):辅助进位标志也称“半进位”标志。AF1,表示本次运算的低4位中的最高位有进位(加法运算时)或有借位(减法运算时)。AF一般用于BCD运算中是否进行十进制调整的依据。十进制调整指令DAA和DAS测试这个标志位。v(4)零标志ZF(Zero Flag):反映运算结果是否为零。若结果为零,则ZF1;若结果不为零,则ZF0。5v(5)符号标志SF(Sign Flag):反映带符号数(以二进制补码表示)运算结果符号位的情况。若结果为负数,则SF1;若结果为正数,则SF0。SF的取值总是与运算结果的最高位(字节操作为D7,字操作为D15,双字操作为D31)取值一致。v(6)溢出标志OF(Overflow Flag):反映有符号数运算结果是否发生溢出。若发生溢出,则OF1;否则,OF0。所谓溢出,是指运算结果超出了计算装置所能表示的数值范围。例如,对于字节运算,数值表示范围为-128+127;对于字运算,数值表示范围为-32768+32767。若超过上述范围,则发生了溢出。溢出是一种差错,系统应做相应的处理。“溢出”与“进位”是两种不同的概念。某次运算结果有“溢出”,不一定有“进位”;反之,有“进位”,也不一定发生“溢出”。另外,“溢出”标志实际上是针对有符号数运算而言,对于无符号数运算,不考虑溢出标志。6 解解 (1)00101 (2)11111 +01010 +11010 11111 10101所以,OF=1 SF=1 ZF=0 OF=0 SF=1 ZF=0 AF=0 PF=0 CF=0 AF=0 PF=1 CF=1例例:指出80 x86CPU执行如下指令后,标志寄存器中各状态标志位的值:(1)MOV AX,32C5H (2)MOV AX,0E453H(1)MOV AX,32C5H (2)MOV AX,0E453H ADD AX,546AH ADD AX,0C572H ADD AX,546AH ADD AX,0C572H7实模式下的存储器地址空间实模式下的存储器地址空间 在实模式下存储器的地址空间为1M字节单元,其地址范围为00000HFFFFFH。实模式下的存储器地址空间被分为通用和专用两种存储区。从地址00000H003FFH这第一个1024个字节单元是专用的。这个存储区为中断向量表区,专门用来存放256个中断服务程序的入口地址(也称中断向量),每个入口地址占4个字节单元。从地址FFFF0HFFFFFH这16个字节单元保留给系统的初始化代码。当处理器加电或复位(Reset)时,CPU执行的第一条指令就是起始于地址FFFF0H的。通常是在FFFF0H处存放一条无条件转移指令,以转移到系统程序的入口处。通用区域用来存储一般的程序指令和数据。由图可见,它的地址范围为00400HFFFEFH。8FFFFFHFFFF0H通用区通用区专用区专用区FFFEFH00400H003FFH00000H专用区专用区实模式下存储器地址空间实模式下存储器地址空间 9v为什麽要采用存储器为什麽要采用存储器“分段分段”技术?技术?实模式下CPU可直接寻址的地址空间为2201M字节单元。CPU需输出20位地址信息才能实现对1M字节单元存储空间的寻址。但实模式下CPU中所使用的寄存器均是16位的,内部ALU也只能进行16位运算,其寻址范围局限在21665536(64K)字节单元。为了实现对1M字节单元的寻址,80 x86系统采用了存储器分段技术。v各个逻辑段在实际的存储空间中可以完全分开,也可各个逻辑段在实际的存储空间中可以完全分开,也可以部分重叠,甚至完全重叠以部分重叠,甚至完全重叠。v 段的起始地址的计算和分配通常是由操作系统完成的,并不需要普通用户参与。10物理地址与逻辑地址物理地址与逻辑地址v物理地址物理地址是信息在存储器中实际存放的地址,它是CPU访问存储器时实际输出的地址。例如,实模式下的80 x86/Pentium系统的物理地址是20位,存储空间为2201M字节单元,地址范围从00000H到FFFFFH。CPU和存储器交换数据时所使用的就是这样的物理地址。v逻辑地址逻辑地址是编程时所使用的地址。或者说程序设计时所涉及的地址是逻辑地址而不是物理地址。编程时不需要知道产生的代码或数据在存储器中的具体物理位置。这样可以简化存储资源的动态管理。在实模式下的软件结构中,逻辑地址由“段基值”和“偏移量”两部分构成。11.段基值段基值(16位位)偏移量偏移量(16位位)150150段基值段基值(16位位)1500000段寄存器段寄存器地址加法器地址加法器物理地址(物理地址(20位)位)190物理地址物理地址逻辑地址逻辑地址实模式下物理地址的产生实模式下物理地址的产生12.4 2 3 20 0 6 64 2 3 20 0 6 60段基值段基值偏移量偏移量左移左移4位位物理地址物理地址逻辑地址逻辑地址 4 2 3 8 6+)v例 设代码段寄存器CS的内容为4232H,指令指针寄存器IP的内容为0066H,即CS4232H,IP0066H,则访问代码段存储单元的物理地址计算如下:13v例 若段寄存器内容是002AH,产生的物理地址是002C3H,则偏移量是多少?解解:将段寄存器内容左移4位,低位补0得:002A0H。从物理地址中减去上列值得偏移量为:002C3H-002A0H0023H。需注意的是,每个存储单元有惟一的物理地址,但它可以由不同的“段基值”和“偏移量”转换而来,这只要把段基值和偏移量改变为相应的值即可。也就是说,同同一个物理地址可以由不同的逻辑地址来构成一个物理地址可以由不同的逻辑地址来构成。或者说,同一个物理地址与多个逻辑地址相对应。例如,段基值为0020H,偏移量为0013H,构成的物理地址为00213H;然而,若段基值改变为0021H,配以新的偏移量0003H,其物理地址仍然是00213H,如图所示。14.00213H00212H00211H00210H0020FH0020EH0020DH0020CH0020BH0020AH00209H00208H00207H00206H00205H00204H00203H00202H00201H00200H段基值段基值(0021H)段基值段基值(0020H)偏移量偏移量(13H)物理地址物理地址偏移量偏移量(03H)逻辑地址逻辑地址一个物理地址对应多个逻辑地址一个物理地址对应多个逻辑地址15n还需指出的是,在这种“段加偏移”的寻址机制中,由于是将段寄存器的内容左移4位(相当于乘以十进制数16)来作为段的起始地址的,所以实模下各个逻辑段只能起始于存储器中16字节整数倍的边界。这样可以简化实模式下CPU生成物理地址的操作。通常称这16字节的小存储区域为“分段”或“节”(paragraph)。v在“段加偏移”的寻址机制中,微处理器有一套用于定义各种寻址方式中段寄存器和偏移地址寄存器的组合规则。如表1和表2所示。16.段寄存器段寄存器偏移地址寄存器偏移地址寄存器主要用途主要用途CSIP指令地址SSSP或BP堆栈地址DSBX、DI、SI、8位或16位数数据地址ES串操作指令的DI串操作目的地址表表1默认的默认的16位位“段段+偏移偏移”寻址组合寻址组合段寄存器段寄存器偏移地址寄存器偏移地址寄存器主要用途主要用途CSEIP指令地址SSESP或EBP堆栈指针DSEAX、EBX、ECX、EDX、EDI、ESI、8位(16位或32位)数数据地址ES串操作指令的EDI串操作目的地址FS无默认一般地址GS无默认一般地址表表2默认的默认的32位位“段段+偏移偏移”寻址组合寻址组合17 堆栈定义堆栈定义:堆栈是存储器中的一个特定的存储区,它的一端(栈底)是固定的,另一端(栈顶)是浮动的,信息的存入和取出都只能在浮动的一端进行,并且遵循后进先出的原则。堆栈的用途:堆栈的用途:堆栈主要用来暂时保存程序运行时的一些地址或数据信息。例如,当CPU执行调用(Call)指令时,用堆栈保存程序的返回地址(亦称断点地址);在中断响应及中断处理时,通过堆栈“保存现场”和“恢复现场”;有时也利用堆栈为子程序传递参数。堆栈的结构:堆栈的结构:v堆栈是在存储器中实现的,并由堆栈段寄存器SS和堆栈指针寄存器SP来定位。SS寄存器存放堆栈段的段基值,它确定了堆栈段的起始位置。SP寄存器中存放堆栈操作单元的偏移量,SP总是指向栈顶。图给出了堆栈的基本结构及操作示意图。18 SSSSSSSPSPSP高地址高地址栈底栈底(栈顶栈顶)存储器存储器(字宽字宽)低地址低地址78H56H34H12H栈底栈底栈顶栈顶栈顶栈顶栈底栈底78H56H34H12H(a)空栈堆空栈堆(b)压入:压入:PUSH AX;AX=1234H PUSH BX;BX=5678H(c)弹出:弹出:POP CX;堆栈的结构与操作堆栈的结构与操作19v值得注意的是,这种结构的堆栈是所谓“向下生长的向下生长的”,即栈底在堆栈的高地址端,当堆栈为空时SP就指向栈底。因此,堆栈段的段基址(由SS寄存器确定)并不是栈底。v堆栈的操作特点:堆栈的操作特点:v实模式下的堆栈为16位宽(字宽),堆栈操作指令(PUSH指令或POP指令)对堆栈的操作总是以字为单位进行。即要压栈(执行PUSH指令)时,先将SP的值减2,然后将16位的信息压入新的栈顶;要弹栈(执行POP指令)时,先从当前栈顶取出16位的信息,然后将SP的值加2。可概括为:“压栈时,压栈时,先修改栈指针后压入先修改栈指针后压入”,“弹栈时,弹栈时,先弹出后修改栈指针先弹出后修改栈指针”。例例:若寄存器AX,BX,CX,DX的内容分别为10,20,30,40时,依次执行PUSH AX,PUSH BX,POP CX,POP DX,PUSH CX,PUSH DX,POP AX,POP BX后,寄存器 AX和BX 的内容分别为10,2020微处理器的工作模式v(1)实模式v(2)保护模式v(3)虚拟8086模式21实模式 80286以上的微处理器所采用的8086的工作模式。在实模式下,采用类似于8086的体系结构,其寻址机制、中断处理机制均和8086相同;物理地址的形成也同8086一样:将段寄存器的内容左移四位再与偏移地址相加。寻址空间为1MB,并采用分段方式,每段大小为64KB(216);此外,在实模式下,存储器中保留两个专用区域,一个为初始化程序区:FFFF0HFFFFFH,存放进入ROM引导程序的一条跳转指令;另一个为中断向量表区:00000H003FFH,在这1K字节的存储空间中存放256个中断服务程序的入口地址,每个入口地址占4个字节,这与8086的情形相同。22 实模式是80 x86处理器在加电或复位后立即出现的工作方式,即使是想让系统运行在保护模式,系统初始化或引导程序也需要在实模式下运行,以便为保护模式所需要的数据结构做好各种配置和准备。实模式是为建立保护式做准备的工作模式。实模式是为建立保护式做准备的工作模式。23保护模式 保护模式是支持多任务的工作模式。保护模式是支持多任务的工作模式。它提供了一系列的保护机制保护机制,如任务地址空间的隔离,设置特权级(03共4个特权级),设置特权指令设置特权指令,进行访问权限进行访问权限(如只读、只执行如只读、只执行)及段限检查及段限检查等。v80386以上的微处理器在保护模式下可以访问4G字节的物理存储空间,段的长度在启动分页功能时是4G字节,不启动分页功能时是1M字节,分页功能是可选的。在这种方式下,可以引入虚拟存储器的概念,以扩充编程者所使用的地址空间。24虚拟8086模式 虚拟8086模式又称“V86模式”。它是既有保护功能又能执行它是既有保护功能又能执行8086代码的工作模式,代码的工作模式,是一种动态工作模式是一种动态工作模式。在这种工作模式下,处理器能够迅速、反复进行V86模式和保护模式之间的切换,从保护模式进入V86模式执行8086程序,然后离开V86模式,进入保护模式继续执行原来的保护模式程序。25 保护模式保护模式实模式实模式虚拟虚拟8086模式模式复位复位复位复位PE=1PE=0作业切换中断返回中断、异常图注:(1)PE保护模式允许,是80 x86控制寄存器CR0的一位(2)异常80286以上的处理器中,称“内部中断”为异常 三种工作模式的转换三种工作模式的转换2680286的地址方式 80286访问存储器时,有两种方式即实地址方式和虚地址保护方式。(1)实地址方式:80286加电后即进入实地址方式。在实地址方式下,80286与8086在目标码一级是向上兼容的,它兼容了8086的全部功能,8086的汇编语言源程序可以不做任何修改在80286上运行。(2)虚地址保护方式:此方式是集实地址方式、存储器管理、对于虚拟存储器的支持和对地址空间的保护为一体而建立起来的一种特殊工作方式,使80286能支持多用户、多任务系统。2780386的工作方式(1)实地址方式:系统启动后,80386自动进入实地址方式。此方式下,采用类似于8086的体系结构 (2)保护方式:是指在执行多任务操作时,对不同任务使用的虚拟存储器空间进行完全的隔离,保护每个任务顺利执行。(3)虚拟8086方式:是指一个多任务的环境,即模拟多个8086的工作方式。2880486的工作方式 80486有如图所示的3种工作方式,即实地址方式、保护方式和虚拟方式。LMSW指令CR0修改指令实地址方式保护方式虚拟8086方式复位信号复位信号修改CR0指令中断IRTED指令任务转换复 位 信号29 微型计算机发展新技术微型计算机发展新技术1、流水线技术、流水线技术 同时进行若干操作的并行处理方式:在执行一条指令时,又取一条或多条指令.特点:增加硬件,提高cpu的工作效率 在80486中:5条流水线 流水线技术:受到最长步骤所需时间的限制2、高速缓存技术、高速缓存技术 在CPU的所有操作中,内存访问是最频繁的操作,而一般的微机中,主存储器采用动态RAM,速度比CPU低一个数量级,因此,缩短存储器的访问时间,是提高计算机速度的关键,在CPU与主存储器加进高速缓冲存储器(Cache)可以较好解决这一问题。30p经常不断地学习,你就什么都知道。你知道得越多,你就越有力量pStudyConstantly,AndYouWillKnowEverything.TheMoreYouKnow,TheMorePowerfulYouWillBe写在最后谢谢你的到来学习并没有结束,希望大家继续努力Learning Is Not Over.I Hope You Will Continue To Work Hard演讲人:XXXXXX 时 间:XX年XX月XX日
展开阅读全文