1、2007. 6. 13,微机原理、汇编与接口技术,朱定华,1.1,1.2,1.3,1.4,计算机的数和编码,微型计算机的结构和工作原理,80x86微处理器,第1章 微型计算机基础,1.5,80x86的寄存器,80x86的工作方式与存储器物理地址的生成,1.1.1 计算机中的数制,常用数制-二,十,十六进制,为了区别3种不同数制,约定,目前在计算机中,数几乎全部用二进制表示 为书写方便,微机中的二进制数用十六进制数缩写 人们最熟悉、最常用的是十进制数,数后加B表示二进制数 带D或不带字母符号表示十进制数 带H表示十六进制数,十进制、二进制、十六进制数之间的关系表,数制间转换,如: 1111111
2、000111B 1 1111 1100 0111B 0001 1111 1100 0111B = 1FC7H,1.二十六,如: 3AB9H = 0011 1010 1011 1001B,数制间转换,2.十六十,如: 38947=9823H,如: 1F3DH=163116215161316013=4096125615163113=409638404813=7997,16 38947 316 2434 216 152 816 9 90,余数倒序排列,数制间转换,3.二十十进制数二进制数:十进制数十六进制数二进制数 二进制数十进制数:二进制数十六进制数十进制数 使用2n(2n的二进制数等于1后跟n个
3、0)和十六进制数、十进制数的对应关系(如下表所示)以及个别十进制整数和十六进制数的对应关系(如50=32H,80=64H,100=64H等) 转换,如: 38947=32768+4096+2048+32+3=8000H+1000H+800H+20H+3H=9823H 1F3DH=2000H-(80H+40H+3H)=8192-(12864+3)=7997,1.1.2 符号数的表示方法,用数的符号和数值部分一起编码的方法表示符号数 8位(字节)、16位(字)或32位(双字)机器数的最高位是符号位。最高位为0正数,为 1负数 区分:机器数、真值、无符号数 掌握符号数的三种常用表示法:原码,反码,补
4、码,如:X1= 105=+1101001B X1原=01101001BX2=-105=-1101001B X2原=11101001B,(1)原码,注: 原码表示的数,8位数中,D7位为符号位,其余7位为数值位(为真值的绝对值) 8位原码数的数值范围为FFH7FH(-127127);16位原码数的数值范围为FFFFH7FFFH(-3276732767) 原码表示简单易懂,且与真值转换方便,但内部运算复杂,为简化计算机结构,引进了反码和补码,注:一个负数的反码的数值部分并不是其真值的绝对值,要按位取反才能求得真值的绝对值,如:X1= 105=+1101001B X1反=01101001BX2=-1
5、05=-1101001B X2反=10010110B,(2)反码,正数的补码与原码一样,符号位为0,其余位为其数值;负数的补码为其绝对值的补数,补数有两种求法: 按位取反后再加1 从最低位向最高位扫描,保留直至第一个“1”的所有“0”位,第一个“1”左边各位按位取反 如:X1= 105=+1101001B X1补=01101001BX2=-105=-1101001B X2补=10010111B 对补码表示的负数求补可以得到其绝对值 如: -105补=10010111B=97H求补,得:01101001=69H=105,即补码表示的机器数97H的真值是-69H(=-105),(3)补码,注: 一
6、个补码数,若最高位为0,则该数即为此数的绝对值;若最高位为1,则其补数为该数的绝对值 8位补码数的范围:80H7FH(-128127).16位补码数的范围:8000H7FFFH(-3276832767) 补码数80H和8000H的最高位既代表了符号为负又代表了数值为1 1个二进制补码数的符号位向左扩展若干位后,所得到的补码数的真值不变如:68补=44H字节, 68补=0044H字-68补= BCH 字节, -68补= FFBCH字 微机中,符号数用补码表示!,1.1.3 二进制数的加减运算,二进制加法规则:,二进制减法规则:,0+0=0 0+1=1+0=1 1+1=0 进位1,0-0=0 1-
7、0=1 1-1=0 0-1=1 借位1,计算机把机器数均当作无符号数进行运算,即符号位也参与运算,如: 59+164=3BH + 0A4H 127160=7FHA0H=0DFH =11FH=287无进位,CF=0 有进位,CF=1,(1)无符号数的运算,192-10=C0H-0AH=B6H =182无借位,CF=0,10-192=0AH-C0H =-B6H=-182有借位,CF=1,结论:对无符号数进行减法运算,其结果的符号用进位来判别:CF=0(无借位)结果为正;CF=1(有借位)结果为负,如:,2 )两个无符号数相减-被减数大于或等于减数,无借位,结果为正;被减数小于减数,有借位,结果为负
8、。,(2)符号数的运算,如:105+50 = 155 127,超出范围,产生溢出又如:-105-50 = -155 -128 ,超出范围,产生溢出,=-155 将进位视为符号,结果正确,=65H结果为正,错误,溢出,0F=1,说明: 将多位二进制数拆成多部分运算时,数的低位部分均为无符号数,只有高位部分才为符号数 注意区分进位与溢出 溢出不同于补码运算中的进位或借位丢失如:-50-5 = -55,判断补码运算有无溢出的方法:,设符号位向进位位的进位为CY,数值部分向符号位的进位为CS,则溢出判别式为:OF=CY CS当OF=1时,有溢出;当OF=0时,无溢出,1.1.4 二进制数的逻辑运算与逻
9、辑电路,(1)逻辑非按位求反,(2)逻辑乘(逻辑与)按位求“与”,如:A=01100001B,B=11001011BA=10011110B,B=00110100B,规则:=0,=0,10=0,11=1如:01100001B11001011B=0100 0001B,(3)逻辑加(逻辑或)按位求“或”,(4)逻辑异或(按位加)按位求模和,规则:00=0,01=1,10=1,11=1如:01100001B11001011B=11101011B,规则:0+0=0,0+1=1,1+0=1,1+1=0如:01100001B 11001011B=10101010B,(5)正逻辑与负逻辑,正逻辑高电平表示逻辑
10、,低电平表示逻辑0 负逻辑高电平表示逻辑 0,低电平表示逻辑1,1.1.5 二进制编码,即用二进制表示的十进制数,简称BCD数 (binary coded decimal),常用的是8421 BCD码,计算机里,字母、各种符号以及指挥计算机执行操作的指令,均用二进制数的组合表示,称为二进制编码,8421 BCD编码表,压缩BCD数用8位二进制数表示2个十进制数位 非压缩BCD数用8位二进制数表示1个十进制数位 如:19 压缩BCD 0001 1001 = 19H19 非压缩BCD 00000001 00001001 = 0109H,说明: 十进制数与BCD数的转换查8421 BCD编码表直接
11、BCD数转换为二进制数写出BCD数的十进制数十进制数转换为二进制数 二进制数转换为BCD数二进制数转换为十进制数根据十进制数写出BCD数,(2)ASCII码-字符在机内的表示 常用的ASCII码字符如表(P10表1-4):,注: (1)十进制数的ASCII码转换成BCD数 减30HBCD数转换成十进制数的ASCII码 加30H (2)将十六进制数的ASCII码转换为十六进制或将十六进制转换为十六进制数的ASCII码,要先判别ASCII码是在哪个区段内,然后再加或减30H或37H。 (3)十进制数的ASCII码转换为二进制数:将ASCII码转换为ASCII BCD数写出ASCII BCD数的十进
12、制数将十进制数转换为二进制数 (4)二进制数转换为十进制数的ASCII码过程与(3)相反,1.1.5 BCD数的加减运算,如:48+59=107,BCD数低位与高位之间逢“10”进1,4位二进制数之间逢“16”进1。而计算机按二进制规律运算,故BCD数进行运算后须进行调整 (1)BCD数加法,如:28-19=9,通常在微机中设有二十进制调整电路,通过调用调整指令来实现调整,(2)BCD数减法,1.2,1.1,1.3,1.4,计算机的数和编码,微型计算机的结构和工作原理,80x86微处理器,第1章 微型计算机基础,1.5,80x86的寄存器,80x86的工作方式与存储器物理地址的生成,位(bit
13、)计算机所能表示的最基本、最小的数据单元。1个二进制位有两种状态“0”和“1” 字(word) 计算机内部进行数据处理的基本单位,与寄存器、ALU宽度一致每一个字所包含的二进制位数称为字长 字节(byte) 8个Bit组成一个字节,存放相邻的8位二制数.字节的长度固定 指令(instruction) 程序(program) 指令系统(instruction set),1.2.1 微型计算机常用的术语,1.2.2 微型计算机的基本结构,微型计算机的基本组成如图所示:,微机的核心部件,具有运算和控制功能,组成: 算术逻辑单元ALU(arithmetic logic unit) 寄存器(regist
14、er)组 控制器(control unit),1.CPU,总线是把计算机各部分有机地连接起来的一组并行导线,是各个部分之间进行信息交换的公共通道,微机的三总线: 数据总线DB在CPU与存储器和CPU与I/O接口之间双向传送数据.其条数决定了每一次能同时传送的二进制数的位数。如:8088的数据总线为8条,一次能够传送8位二进制数,用D7D0表示,2.总线,地址总线AB传送CPU发出的地址,以寻址存储单元或I/O端口。AB的宽度决定了计算机系统能够使用的最大的存储器容量。如:地址总线为20条,用A19A0表示,可寻址220=1M的存储空间 控制总线CB向计算机系统的各部件发送操作命令和定时信息。带
15、有上横线的表示低电平有效,无上横线的表示高电平有效如:ALE(address latch enable)、INTR高电平有效,MEMW、MEMR、IOR、IOW、INTA低电平有效,3.存储器(memory),(1) 存储器单元的地址和内容,(1) 存储器的分类存储器分为内部存储器和外部存储器两大类,分别简称为内存和外存,外存也叫辅存,内存也叫主存。程序和数据以文件的形式保存在外存中,要执行的程序和要使用的数据必须事先调入内存。为了加快CPU访问内存的速度,从而提高程序的运行速度,在内存和CPU之间或者CPU内部增加了存取速度较高的高速缓冲存储器,即cache。为了扩充内存容量,还将外存作为内
16、存的辅助,给用户提供比内存大得多的逻辑存储容量,这就是所谓的“虚拟存储器”。,虚拟存储器人们通常所指的内存是由“内存条”组成的物理存储器,物理存储器是由地址总线直接访问的存储空间,其地址称为物理地址。显然,地址总线的条数决定了物理存储器即内存的最大容量。虚拟存储器是相对物理存储器而言的,虚拟存储器是指程序使用的逻辑存储空间,它可以比物理存储空间大得多。虚拟存储器由内存、辅存和管理部件共同组建。通过管理软件达到内存和辅存密切配合,使整个存储系统的速度接近内存、容量接近辅存。当应用程序访问虚拟存储器时,必须给出虚拟地址即逻辑地址,在此过程中,先通过硬件和软件找出逻辑地址到物理地址之间的对应关系,判
17、断要访问的是否已装入内存,如已装入则直接访问内存,否则,相应的硬件和管理软件会将要访问的有关数据块从辅存调入内存,与此同时将内存中原有的暂时不使用的某数据块调回辅存,并且将虚拟地址转变为物理地址。,高速缓冲存储器高速缓冲存储器即高速缓存Cache是使用速度与CPU相当的静态随机读/写存储器芯片组成的小容量存储器,用来存放微处理器最近要用的指令和数据。Cache中的内容其实是内存中一小部分内容的复制品,内存中经常被微处理器使用到的一部分内容要烤页到Cache中,并不断地更新Cache中的内容,使得Cache中总是保存有最近经常被微处理器使用的一部分内容。Cache中存放的内容除了内存中的指令和数
18、据外,还要存放这些指令和数据在内存中的对应地址。当微处理器存取指令和数据时,Cache截取微处理器送出的地址,并判别这个地址与Cache中保存的地址是否相同。若相同,则从Cache中存取该地址中的指令或数据;否则就从内存中存取。,(3) 存储器的操作CPU对存储器的操作有读和写两种,读操作是CPU将存储单元的信息取到CPU内部,而写操作是CPU将其内部的信息传送到存储单元保存。写操作要改变被写存储单元的内容,而读操作则不改变被读存储单元的内容。向存储单元存放或取出信息,都称为访问存储器。访问存储器时,先由地址译码器将送来的单元地址进行译码,找到相应的存储单元;再由读写控制电路,根据送来的读或写
19、命令确定访问存储器的方式,完成读出(读)或写入(写)操作。,4.总线插座和接口 外部设备通过总线插座和接口与计算机连接。设置接口的主要原因 外设的工作速度远低于CPU的速度 外设表示信息的格式与计算机不同 接口向计算机报告设备的状态,传达计算机命令等,(5)I/O设备,输入设备:键盘、模数转换器、扫描仪等 输出设备:显示器、打印机、绘图机等 输入/输出设备:磁盘和光盘等,1.2.3 计算机的工作原理,CPU、存储器、I/O接口、外部设备构成了计算机的硬件(hardware),光有这样的硬件还只是具有了计算的可能。计算机要真正能够进行计算还必须有多种程序的配合当人们要解决问题时,首先将问题程序化
20、,形成指令序列,然后将它存入存储器中,再由CPU的控制器和ALU依据程序中指令的顺序周而复始地取出指令,分析指令,执行指令,最后输出程序结果.即“程序存储和程序控制”,1.2,1.1,1.4,计算机的数和编码,微型计算机的结构和工作原理,80x86微处理器,第1章 微型计算机基础,1.5,80x86的寄存器,80x86的工作方式与存储器物理地址的生成,1.3,1.3.1 8086/8088,(1)执行单元EU(execution unit),(2)总线接口单元BIU(bus interface unit),EU负责执行指令,完成两种操作:算术逻辑运算、计算存储器操作数的偏移地址,BIU完成所有
21、的总线操作 EU和BIU并行工作,可以同时进行读/写操作和执行指令的操作,1.3.1 8086/8088,1.3.2 80286,内部和外部数据总线都是16位,地址总线为24位,可寻址224字节即16MB内存,支持虚拟存储器管理技术,虚拟存储空间可达1GB(230)。 微处理器的组成:地址单元AU(Address Unit)总线单元BU(Bus Unit)指令单元IU(Instruction Unit)执行单元EU AU中的存储器管理机构使用段式管理方式,首次实现了虚拟存储器管理,1.3.3 80386,内部和外部数据总线都是32位的,地址总线为32位,可寻址4GB,虚拟存储空间可达64TB(
22、246) 微处理器的组成:总线接口单元BIU指令译码单元IDU(Instruction Decode Unit)指令预取单元IPU(Instruction Prefetch Unit)执行单元EU分段单元SU(Segmentation Unit)分页单元PU(Paging Unit),1.3.4 80486,内部数据总线为64位,外部数据总线为32位,地址总线为32位) 微处理器的组成:总线接口单元、指令译码单元指令预取单元、执行单元分段单元分页单元以及浮点处理单元(FPU)高速缓存(Cache memory),1. Pentium微处理器的内部结构,1.3.5 Pentium,(1)总线接口
23、单元总线接口单元实现微处理器与微型计算机系统总线的连接,其中包括64位数据线、32位地址线和众多的信号线,以此实现微处理器与外部的信息交换。Pentium微处理器与外部交换数据可以是64位还可以是32位、16位或者8位。 (2)分段单元和分页单元分段单元将程序提供的逻辑地址转换为线性地址,分页单元将线性地址转换为物理地址。分页是将段分为多个固定大小的页面(通常为4KB),分页支持虚拟存储器环境。内存中只保留程序访问的页面,而众多的页面被存储在磁盘中。当程序要访问线性地址空间中的某个地址时,分页单元先将线性地址转换为存储器的物理地址,然后执行对该地址的读操作或写操作。如果所访问的页面不在物理内存
24、中,微处理器就会暂时中断该程序的执行,由操作系统将所需的页面从磁盘读入物理内存中,然后接着执行被中断的程序。,(3)U流水线和V流水线Pentium采用两条流水线,这两条流水线都拥有自己的算术逻辑单元ALU、地址生成电路和数据Cache的接口。这种双流水线结构允许Pentium可以一次执行两条指令,每条流水线中执行一条。 (4)指令Cache和数据Cache在Pentium中,指令Cache和数据Cache两者分开,从而减少了指令预取和数据存取操作之间可能发生的冲突,并可提高命中率。Pentium的数据Cache有两个接口,分别与U和V两条流水线相连,以便同时和两条流水线交换数据。 (5)指令
25、预取单元、指令译码单元和控制ROM指令预取单元从指令Cache中预先取指令,每次取两条指令。如果是简单指令,通过指令译码单元译码后,将两条指令分别送到U流水线和V流水线执行。如果是复杂指令,通过控制ROM将其转换成对应的一系列微指令,再送到U流水线和V流水线执行。复杂指令对应的微指令存放在控制ROM中。微指令是微处理器能够直接执行的指令,它的长度是固定的,因此很容易在流水线中进行处理。,(6)控制单元控制单元的功能是通过对来自指令译码单元和和控制ROM中微程序的解析,控制U流水线、V流水线和浮点处理单元的正常运行。 (7)分支转移目标缓冲器分支转移目标缓冲器在遇到分支转移指令时用来预测转移是否
26、发生,并据此为分支指令处的指令提供预取地址。 (8)浮点处理单元浮点处理单元主要用于浮点运算,使得浮点运算的速度得到提高。,1.3.5 Pentium,2.Pentium微处理器的先进技术 (1)超标量流水线 (2)分支转移的动态预测 (3)独立的指令Cache和数据Cache (4)重新设计的浮点单元,1.2,1.1,计算机的数和编码,微型计算机的结构和工作原理,80x86微处理器,第1章 微型计算机基础,1.5,80x86的寄存器,80x86的工作方式与存储器物理地址的生成,1.4,1.3,1.4.1 8086/8088 的寄存器,通用寄存器共8个:AX,BX,CX,DX,SP,BP,SI
27、,DI,均为16位,在EU部件中 AX,BX,CX,DX均可分成高8位和低8位,作为独立的8位寄存器使用:AH,AL,BH,BL,CH,CL,DH,DL AX累加器,BX基址寄存器CX计数寄存器,DX数据寄存器SP堆栈指示器,BP基址指示器SI源变址寄存器,DI目的变址寄存器,1.通用寄存器,IP 硬件电路,能自动跟踪指令地址。在开始执行程序时,赋给IP第一条指令的地址,然后每取一条指令,IP的值就自动指向下一条指令的地址,2.指令指示器IP(instruction point),9个标志位,其中6个状态标志,3个控制标志,3.状态标志寄存器(status flags),进位标志位CF 加减运
28、算执行后,最高位有进位或借位,CF=1;无进位或借位,CF=0主要用于多字节加减运算 辅助进位标志位AF 最低4位D3D0位有进位或借位,AF=1;无进位或借位,AF=0用于BCD数的算术运算(调整)指令,(1)状态标志,反映EU执行算术或逻辑运算后的结果,3.状态标志寄存器(status flags),溢出标志位OF 运算结果超出了机器数所能表示的数的范围OF=1;反之,OF=0该标志表示运算结果是否产生了溢出 符号标志位SF 结果为负数,SF=1;结果为正数,SF=0 零标志位结果为0,ZF=1;结果不为0,ZF=0 奇偶标志位PF结果低八位中1的个数为偶数,PF=1;为奇数,PF=0。用
29、于检查数据在传送过程中是否发生错误,3.状态标志寄存器(status flags),方向标志位DF控制数据串操作指令的步进方向 DF=1,地址增址;DF=0,地址减址 中断允许标志位IF 控制CPU是否开中断. IF=1, CPU开中断IF=0, CPU关中断 追踪标志位TF(陷阱标志位)TF=1,CPU单步执行程序,常用于程序的调试 TF=0,CPU正常执行程序,(2)控制标志,用于控制CPU的操作。,3.状态标志寄存器(status flags),实地址方式使用20条地址线,存储器的物理地址必须用20位二进制数表示。ALU只能处理16位的地址运算,与地址有关的寄存器:指令指示器,堆栈指示器
30、,间接寻址的寄存器BX,BP,SI,DI等都只有16位。因此在实地址方式下把20位的存储器地址分成若干个段来表示。段寄存器就是用来存放段的起始地址的高16位地址的寄存器。段内再由16位二进制数来寻址,段内寻址的16位二进制数地址是存储单元到段起始地址的距离,称为段内偏移地址。存储单元的地址由段基址的高16位或段寄存器和偏移地址两部分组成,用冒号连接段基址的高16位或段寄存器和偏移地址,像这样表示的地址称为逻辑地址。段基址的高16位:偏移地址或段寄存器:偏移地址。,4.段寄存器,CS-存放代码段的段基址的高16位 SS-存放堆栈段的段基址的高16位 DS-存放数据段的段基址的高16位 ES-存放
31、附加数据段的段基址的高16位,1.4.2 80286的 寄存器,在8086的基础上新增: 16位的机器状态字寄存器MSW:只定义了低4位标志寄存器EFLAGS增加两个标志位:任务嵌套标志位NT(nested task )和I/O特权级标志位IOPL(I/O privilege level field)分别位于D14、 D13和D12 3位,1.4.3 80386的 寄存器,1.基本寄存器,(1)通用寄存器,EAX,EBX,ECX,EDX,ESP,EBP,ESI,EDI,均为32位 低16位AX、BX、CX、DX、SP、BP、SI、DI,用法与8086完全相同,1.4.3 80386的 寄存器,
32、(2)指令指示器EIP和标志寄存器EFLAGS,均为32位,它们的低16位即是8086的IP和FLAGS,并可单独使用工作于保护方式下时,EIP是32位的寄存器;工作于实地址方式下时,EIP就是16位的寄存器IP保留了80286的所有标志,并在高位字的最低两位D17和D16增加了虚拟8086方式标志VM和恢复标志RF,1.4.3 80386的 寄存器,(3)段寄存器,6个段寄存器:CS,SS,DS,ES,FS,GS,均为16位FS、GS的作用与ES相同段基址与段寄存器的关系由微处理器80386的工作方式确定,1.4.3 80386的 寄存器,2.系统寄存器,(1)系统地址寄存器,全局描述符表寄
33、存器GDTR中断描述符表寄存器IDTR局部描述符表寄存器LDTR任务寄存器TR 主要用来在保护模式下管理用于生成线性地址和物理地址的个系统表,1.4.3 80386的 寄存器,(2)控制寄存器控制寄存器有个:CR0CR3,CR1为备用。主要用来进行分页处理。(3)调试寄存器DR0DR7,主要用来设置程序的断点(4)测试寄存器TR6和TR7,用来进行页处理,1.4.4 80486的 寄存器,新增加3个测试寄存器TR3TR5用于片内Cache测试以及浮点处理单元的浮点寄存器80486除了保留80386的所有标志外,在D18位增加了对准检查标志AC(alignment check),1.4.5 Pe
34、ntium的 寄存器,1.基本寄存器,(1)通用寄存器,EAX,EBX,ECX,EDX,ESP,EBP,ESI,EDI,均为32位 低16位AX、BX、CX、DX、SP、BP、SI、DI,用法与8086完全相同,1.4.5 Pentium的 寄存器,(2)指令指示器EIP,EIP是32位的寄存器,它用来存放下一条要执行指令的偏移地址 低16位即是8086的指令指示器IP,可单独使用 微处理器工作于保护方式下时,EIP是32位的寄存器;工作于实地址方式下时,EIP是16位的指令指示器IP。,1.4.5 Pentium的 寄存器,(3)标志寄存器EFLAGS,1.4.5 Pentium的 寄存器,
35、(4)段寄存器,6个16位段寄存器:CS、SS、DS、ES、FS、GS。在实地址方式,段寄存器用来存放段的起始地址即段基址的高16位地址;CS、SS、DS和ES的作用与8086相同,FS和GS的作用与ES相同。在虚地址保护方式,段寄存器中存放的是选择字,选择字如下图所示。CS 、SS、DS中的描述符索引分别指向当前段对应的段描述符,ES、FS和GS中的描述符索引指向当前3个附加数据段对应的段描述符,由此可以找到当前各个段的段基址。,1.4.5 Pentium的 寄存器,2.系统寄存器,(1)系统地址寄存器,GDTR:48位,其中高32位是全局描述符表GDT的线性基地址,低16位是GDT的界限
36、IDTR:48位,其中高32位是中断描述符表IDT的线性基地址,低16位是IDT的界限 LDTR:16位,用来存放描述符索引,据此可在全局描述符表GDT中检索到局部描述符表LDT对应的描述符 TR:16位,用来存放描述符索引,据此可在全局描述符表GDT中检索到任务状态段TSS对应的描述符,1.4.5 Pentium的 寄存器,(2)控制寄存器,CR0:用来保存系统的标志, CR0的低位字是机器状态字MSW(machine status word),1.4.5 Pentium的 寄存器,CR2和CR3:是两个用于存储器管理的地址寄存器。在分页操作时,如果出现异常,CR2中则会保存异常处的32位线
37、性地址。CR3的前20位保存着页目录表的基地址,CR3的D3位和D4位用来对外部Cache进行控制。CR4:只用了最低7位,所用位的定义如下图所示。,1.4.5 Pentium的 寄存器,(3)调试寄存器,8个调试寄存器是DR0DR7主要用来设置程序的断点和程序调试 DR0DR3:保存4个断点的线性地址 DR4和DR5:Intel公司保留 DR6:调试状态寄存器,在调试过程中用来报告断点处的状况 DR7:配合设置的断点控制寄存器,用来设置控制标志,控制断点的设置、设置条件、断点地址的有效范围以及是否进入异常中断等(4) 测试寄存器Pentium有18个测试寄存器,用寄存器号00H14H来表示,
38、其中有3个号未使用。每个测试寄存器有一个特定的测试功能。Pentium有专用的读/写指令来访问这些测试寄存器。,1.4.5 Pentium的 寄存器,3.浮点寄存器,(1)数据寄存器数据寄存器有8个,它们是R0R7。每个寄存器有80位,80位的浮点数中1位为符号位、15位为阶码、64位为尾数 (2)标记字寄存器标记字寄存器是1个16位的寄存器,每2位为1个标记,共8个标记,分别指示8个数据寄存器的状态。,1.4.5 Pentium的 寄存器,(3)状态寄存器16位的寄存器,用来指示浮点处理单元的当前状态,1.4.5 Pentium的 寄存器,(4)控制字寄存器,1.4.5 Pentium的 寄
39、存器,(5) 指令指示器和数据指示器 存放发生故障的指令地址及其操作数的存储地址,1.2,1.3,1.4,计算机的数和编码,微型计算机的结构和工作原理,80x86微处理器,第1章 微型计算机基础,1.5,80x86的寄存器,80x86的工作方式与存储器物理地址的生成,1.5,1.1,80x86的工作方式有4种: 实地址方式(real address mode) 虚地址保护方式 (protected virtual address mode) 虚拟8086方式(virtual 8086 mode) 系统管理方式(system management mode)8086/8088只有实地址方式1种工
40、作方式80286有实地址方式和虚地址保护方式2种工作方式80386和80486有实地址、虚地址保护方式和虚拟8086方式种工作方式。Pentium有实地址方式、虚地址保护方式、虚拟8086方式和系统管理方式4种。,1.5.1 80x86的工作方式,1. 实地址方式实地址方式是实在的1MB的物理地址空间的工作方式,实地址方式采用存储器地址分段的方法,使两个16位的地址实现了对1MB地址空间寻址的20位的物理地址。在实地址方式下,操作数的默认长度为16位,可以运行8086的全部指令。80x86除了虚地址保护方式指令外,其余指令都可以在实地址方式下运行。8086和80286微处理器允许4种存储器分段
41、,段寄存器为CS、DS、SS和ES。80386以上微处理器允许6种存储器分段,段寄存器为CS、DS、SS、ES、FS和GS。,2. 虚地址保护方式虚地址保护方式是支持虚拟存储器、支持多任务、支持特权级与特权保护的工作方式。在虚地址保护方式下,32位微处理器可访问的物理空间为4GB (232字节),由辅存和内存提供的虚拟空间可达64TB(246字节)。该方式对如此之大的虚拟存储空间采取保护措施,使系统程序和用户的任务程序之间以及各任务程序之间互不干扰地运行。最主要的保护措施是特权级和特权保护。特权级(privilege level)分为4级,由2位二进制数组成,特权级编号为03,其中0级为最高特
42、权级,3级为最低特权级。每个存储段都同一个特权级相联系,只有足够级别的程序才可以对相应的段进行访问。在程序运行的过程中,通过CPL、DPL和RPL三个特权级来实施特权级保护。,CPL(current privilege level)是当前特权级,它既是代码段寄存器CS的最低2两位的值,也是当前代码段的DPL的值,用来表示当前正在运行的程序的特权级。 DPL(descriptor privilege level)是描述符特权级,每个段的段描述符中都有2位DPL来标明此段的特权级。只有当CPL等于或高于DPL时,当前任务才能访问描述符所确定的段中的数据。 RPL(requrstor privile
43、ge level)是请求特权级,它位于数据段寄存器的最低2位,用来防止特权级低的程序访问特权级较高的数据段。,3. 虚拟8086方式虚拟8086方式是一种在32位虚地址保护方式下支持16位实地址方式应用程序运行的特殊工作方式。微处理器的工作过程与虚地址保护方式下的工作过程相同,但程序指定的逻辑地址又与8086实地址方式相同。在这种方式下操作系统可以建立多个8086虚拟机,每个虚拟机都认为自己是唯一运行的机器,安全地运行以实地址方式编写的16位应用程序。虚拟8086方式是具有最低特权级(特权级为3)的保护方式。当标志寄存器的VM位为1时,微处理器进入虚拟8086方式。4. 系统管理方式系统管理方
44、式主要为系统管理而设置。该方式可使系统设计人员实现高级管理功能,例如对电源实施管理,对操作系统和正在运行的程序实施管理,提供透明的安全性。系统管理方式也是的一项主要特征,它由计算机内部的硬件(装有系统程序代码的ROM)来控制。,1. 实地址方式下的存储器分段 存储器段的划分如右图所示: 8086/8088可寻址220=1M字节,分为216=64K个段,每一段最多可寻址216=64K个单元每个段的首地址的低4位为0,1.5.2 存储器分段和物理地址的生成,将段寄存器的值即段基址的高16位乘以10H即将16位二进制数逻辑左移4位得到20位的段基址,然后与16位的偏移地址相加得到20位的物理地址,如
45、右图所示。,2. 实地址方式下物理地址的形成:段寄存器的值10H+偏移地址,1.5.2 存储器分段和物理地址的生成,例: 逻辑地址0001H:0010H对应的 物理地址为00010H+0010H=00020H,1.5.2 存储器分段和物理地址的生成,3. 虚地址保护方式下80286存储器的分段和物理地址的形成,1.5.2 存储器分段和物理地址的生成,4. 虚地址保护方式下80386、80486、Pentium存储器的分段和物理地址的形成,1.5.2 存储器分段和物理地址的生成,5. 虚拟8086方式物理地址的生成80x86工作在虚拟8086方式时,所寻址的物理内存是1MB,段寄存器的内容不再是描述符表的描述符索引而是段基址的高16位。将段寄存器的内容乘以16(左移位)就是20位的段基址,与偏移地址相加形成20位的线性地址,线性地址再经过页管理单元的分页处理,就可得到20位的物理地址。,