第1章汇编语言基础107.ppt_第1页
第1章汇编语言基础107.ppt_第2页
第1章汇编语言基础107.ppt_第3页
第1章汇编语言基础107.ppt_第4页
第1章汇编语言基础107.ppt_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

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

文档简介

1、1,新 编 汇编语言程序设计,2,第一章 汇编语言基础,1.1 计算机内数据的表示 1.2 计算机组织 1.3 指令、程序和程序设计语言 1.4 80 x86寄存器 1.5 80 x86 CPU的工作模式 习题一,3,汇编语言的特点: 1. 面向计算机“硬件”进行程序设计 2. 使用与机器指令同级的符号指令编写程序 3. 程序短小、运行速度快、发挥计算机的全部性能 学习汇编语言的目的: 1. 深刻理解计算机硬件、软件的工作原理 2. 深刻理解基本控制结构程序的编制、计算机实现 3. 编写要求实时、高效的应用程序,4,1.1.1 进位计数制 1.1.2 数据组织 1.1.3 无符号数的表示 1.

2、1.4 有符号数的表示 1.1.5 字符编码 1.1.6 BCD码,1.1 计算机内数据的表示,5,进位计数制三个基本特征: 有限个数字符号:0,1,2,R-1,“R” 称为“基数”; “逢R进1”; “权展开式”: 小数点向左各数字的“权”分别是R0,R1,R2,R3,。 小数点向右各数字的“权”分别是R-1,R-2,R-3,。 D = dn-1dn-2dn-3d2d1d0.d-1d-2d-m = dn-1Rn - 1+ d1R1+d0R0+d-1R-1+ + d-mR-m,1.1.1 进位计数制,6,10个数字符号:0,1,2,9; “逢十进一” ; 小数点向左各数字的“权” 是100,1

3、01,102,103, 小数点向右各数字的“权” 是10-1,10-2,10-3,。 例:323.31=3102+2101+3100+310-1+110-2。 十进制数用它原来的形式表示,如123,-36等, 也可以在数值后面加上字母“D”或“d”,如123D,-36d等。,1. 十进制计数法,7,计算机内部采用“二进制”表示数据。2个数字符号:0,1;“逢二进一”:用“进位”的方法表示大于1的数;“权展开式”:小数点向左各数字的“权” 是:20,21,22,23,。小数点向右各数字的“权” 是:2-1,2-2,2-3,。,2. 二进制计数法,8,十进制数转换为二进制数,9,二进制数转换为十进

4、制数,(11011.101)2 = 124+123+022+121+ 120+12-1+02-2+12-3 = (27.625)10,10,3. 八进制和十六进制计数法,八进制: 八进制使用的数字符号:0,1,2,3,4,5,6,7。 一位8进制数可以方便地转换成3位二进制数,(1101100.0101)2 =(1 101 100.010 1)2 =(001 101 100.010 100)2 =(154.24)8,11,十六进制,十六进制使用的数字符号:09,AF。 一位十六进制数可以方便地转换成4位二进制数,(1101100.0101)2 = (110 1100.0101 )2 = (01

5、10 1100.0101 )2 = (6C.5)16,12,1.1.2 数据组织,1 位(bit)- 最小信息表示单位 2 字节(Byte)-最小信息存储单位 3 字(Word)和双字(Double Word),13,1.1.3 无符号数的表示,用字节、字、双字或者更多的字节来存储和表示。 用N位二进制表示一个无符号数时,最小的数是0,最大的数是2N-1(二进制111111)。 无符号数需要增加它的位数时,在它的左侧添加若干个“0”,称为“零扩展”。 “进位标志(Carry out Flag,CF)”表示二个无符号数运算结果的特征。如果CF = 1,表示它们的加法有“进位”,或者它们的减法有“

6、借位”。CF = 0,则没有产生进位或借位。,-正数和零的集合,14,1.1.4 有符号数的表示,1 原码 最左边一位二进制表示这个数的符号: “0”代表正,“1”代表负 后面是它的“有效数字” 一个字节存储有符号数原码,有127个正数(1127),127个负数(-1 -127)和2个“0”,“正”0:0 000 0000,“负”0:1 000 0000。 原码的表示规则简单,但是运算规则比较复杂,不利于计算机高速运算的实现。,-原码、反码、补码,15,2. 反码 用最高位“0”表示符号为正,“1”表示符号为负。 符号位之后的二进制位用来存储这个数的有效数字: 正数的有效数字不变,负数的有效数

7、字取反。 对于正数 X = dn-2dn-3d2d1d0, X反 = X = 0 dn-2dn-3d2d1d0。 对于负数 Y =dn-2dn-3d2d1d0, Y反 = 1111111|Y| = 2n-1-|Y| = 2n1+Y 。 1字节存储有符号数反码,有127个正数(1127),127个负数(-1 -127)和2个“0”, “正”0:0 000 0000, “负”0:1 111 1111。 反码的运算规则仍然比较复杂,可以用作原码和常用的补码之间的一个过渡。,16,3补码,用最高有效位(MSB)表示一个有符号数的符号:“1”表示负,“0”表示正。 其他二进制位用来存储这个数的有效数字:

8、 正数的有效数字不变,负数的有效数字取反后最低位加1。 用字节存储一个有符号数时, 对于正数 X = dn-2dn-3d2d1d0, X补 = X = 0 dn-2dn-3d2d1d0。 对于负数 Y =dn-2d1d0, Y补 = 1(dn-2d1d0 ) #+1 = 1111111|Y|+1 =2n|Y| = 2n + Y。,17,一字节存储有符号数补码时,有127个正数(1127), 128个负数(-1 -128),1个“0”(0000 0000)。 其中,-1补=1 111 1111,-128补=1 000 0000。 把一个数补码的所有位(包括符号位)“取反加1”,得到这 个数相反数

9、的补码。称为“求补”, X补求补=-X补。 已知一个负数的补码,求这个数自身时,可以先求出这个数相反数的补码。,例:已知X补=1 010 1110,求X的值: -X补=X补求补=1 010 1110求补=0 101 0001+1=0 101 0010 于是,-X = +101 00102 = +82 于是,X= -82,18,19,一个补码需要增加它的位数时, 对于正数,需要在它的左侧添加若干个“0”, 对于负数,则需要在它的左侧添加若干个“1”。 用它的符号位来填充增加的“高位”,称为“符号扩展”。,4 补码的扩展,例: -5补 = 1 111 1011(8位) = 1 111 1111 1

10、111 1011(16位) +5补 = 0 000 0101(8位)= 0 000 0000 0000 0101(16位),20,补码的运算遵循以下规则: X+Y补=X补+ Y补 XY补=X补 Y补 ( XY补=X补 -Y补=X补Y补求补 ) “溢出标志(Overflow Flag, OF)”表示有符号数运算特征。 OF= 1,表示运算结果超过了表示范围,称为“溢出”, OF=0,没有产生溢出。 计算机自身用“双进位法”判断是否产生“溢出”: 补码最左边2个位上的进位相等,没有溢出,反之有溢出。,5 补码的运算,21,同号数和异号数相加使用相同的规则; 有符号数和无符号数加法使用相同的规则 减

11、法可以用加法实现(对于电子计算机内的开关电路, 求补是十分容易实现的),补码运算规则的优点:,上述特性可以用来简化运算器电路,简化指令系统 计算机内的有符号数一般都用补码表示,除非特别说明。,22,ASCII(American Standard Code for Information Interchange,美国信息交换标准编码 )。 7位二进制表示一个字母、数字或符号,包含128个不同的编码。 一个字符的ASCII码占用一个字节,低7位是它的ASCII码,最高位置“0”,或者用作“校验位”。,1.1.5 字符编码,23,ASCII编码的前32个(编码00H1FH)用来表示“控制字符”,例如

12、CR(“回车”,编码0DH),LF(“换行”,编码0AH)。 ASCII编码30H39H用来表示数字字符“0”“9”。它们的高3位为011,低4位就是这个数字字符对应的二进制表示。 ASCII编码41H5AH用来表示大写字母“A”“Z”,它们的高2位为10。 ASCII编码61H7AH用来表示小写字母“a”“z”,它们的高2位为11。 小写字母的编码比对应的大写字母大20H。,24,用一组四位二进制来表述一位十进制数,组间仍然按照“逢十进一”的规则进行,称为“BCD码(Binary Coded Decimal)”。 压缩的BCD码用一个字节存储2位十进制数,高4位二进制表示高位十进制数,低4位

13、二进制表示低位十进制数。用相同数字的十六进制数表述。 非压缩的BCD码用一个字节存储1位十进制数,低4位二进制表示该位十进制数,对高4位的内容不作规定。,1.1.6 BCD码,十进制数25的压缩BCD码用25H表示。 数字字符7的ASCII码37H就是数7的非压缩BCD码,25,41H:有符号数+65的补码 无符号数65 大写字母A的ASCII码 十进制数41D的压缩BCD码,计算机内的一组二进制编码和它们的“原型”之间存在着 “一对多”的关系:,知情者: 定义、使用该数据的程序员。,26,1.2 计算机组织,1.2.1 计算机组成 1.2.2 中央处理器 1.2.3 存储器 1.2.4 总线

14、 1.2.5 外部设备和接口,27,“存储程序原理”:把程序事先存储在计算机内部,计算机通过 执行程序实现高速数据处理。 “五大功能模块”:电子数字计算机由运算器、控制器、存储器 、输入设备、输出设备组成。,“冯诺依曼体系结构” :,28,中央处理器(Central Process Unit, CPU)”或“微处理器(Micro Process Unit, MPU)”:把控制器、运算器、寄存器和高速缓冲存储器集成在一块集成电路上 。 Intel 8086与它兼容的若干微处理器,统称为80X86微处理器。 寄存器:由电子线路构成的一个电子器件,可以用来储存若干位二进制。寄存器可以存储运算过程的中

15、间结果,节省反复访问内存储器的时间开销 高速缓冲存储器(Cache):容量较小,速度较快的存储器。把将要执行的程序指令和将要使用的数据“提前”取到CPU的内部,加速程序的执行。,1.2.2 中央处理器,29,存储器用于存储程序和数据,是计算机的重要部件。 存储器属于计算机“主机”的一部份,为了和磁盘存储器等“外部存储器”加以区分,也称为“内存储器”或者“主存储器”。,1.2.3 存储器,30,80X86微机内存储器以“字节”为基本单位, 称为“存储单元”。 每个字节用一组二进制数进行编号,称为“地址” 地址的位数决定了可以编号的字节的个数,也就是 内存储器的大小,或者容量。,1 存储器物理组织

16、,假设“地址”20300H的单元存放了数据34H,可以写作(20300H)= 34H,31,1KB(千字节)= 210B =1024B103B 1MB(兆字节)= 210KB = 220B106B 1GB(吉字节)= 210MB = 230B109B 1TB(太字节)= 210GB = 240B1012B,用16位二进制表示存储器地址: 最小地址为0000H,最大地址为0FFFFH, 共有65536(64K=216)个不同的地址, 最多可以连接64KB的存储器。 8086CPU有20位地址线,可以连接最多1MB = 220B的内存储器,32,读操作:从某个存储单元取出事先存储的程序指令或数据

17、读操作不改变原存储单元的内容。 写操作:把一个数据存入指定的存储单元。写操作之后, 该存储单元原来的内容被新的内容所“覆盖”,不复存在 一次存储器的读操作或写操作统称为对存储器的一次 “访问(Access)”。,2 存储器操作,从20300H单元读出它的内容“34H”之后,该单元的内容仍然是“34H”。 向20300H单元写入“11H”之后,该单元内容变成“11H”,原来的数据“34H”被覆盖。,33,一项数据可能占用连续的多个存储单元: 高位的数据存入地址较大的存储单元 用多个存储单元中的最小地址来表示该数据的地址。,3 存储器内的数据组织,例如,数据12345678H存储在地址为23000

18、H23003H的4个连续的内存单元,每个存储单元存储这个数据的一部分(8b),顺序为:78H,56H,34H,12H。用23000H作为这个“双字”数据的存储地址。,34,对连续的多个存储单元进行读写时,发送给存储器的是这个数据的最小地址。 向存储器发出一个地址信号之后,可以进行1B/2B/4B数据的读写,对应的地址称为“字节地址”、“字地址”和“双字地址”。地址的这个“属性”在指令中指明。,向存储器发出地址23000H和“读命令”后,如果这个地址是“字节地址”,那么读出的内容是78H,如果这个地址是“字地址”,那么读出的内容是5678H,如果这个地址是“双字地址”,那么读出的内容是12345

19、678H。,35,4 存储器分段结构,“段(Segment)”:内存中的一片区域,用来存放某一种类型的信息。 例如,用一片存储区存放某程序所使用的数据,该存储区称为“数据段”。类似的,还有存放程序代码的“代码段”,存放程序运行时临时信息的“堆栈段”等。 采用分段结构之后,内存单元的地址由两部分组成:所在段的起始地址,该单元在这个段内的相对地址。 段内相对地址也称为“偏移地址”,一般从0开始编码。 段的起始地址是这个段的所有单元公用的,相对固定。,36,段基址:每个段20位起始地址的高16位,存放在专门的 “段寄存器”内。 每个段的偏移地址用16位二进制表示。这样,每个段最 多可以有216 B

20、= 64KB。,8086 CPU的分段方法:,例如:把“数据段”的段基址存放在“数据段寄存器”DS中,访问数据时,自动从DS中取出段基址。,37,“逻辑地址”:用“段基址:偏移地址”表示的地址,是程序 员在汇编语言程序中使用的地址。 “物理地址”:访问存储器的20位地址。 计算机硬件把逻辑地址转换为物理地址: 把“段基址”尾部添加4个0(相当于乘上16),得到 “段起始地址”,再加上偏移地址,就得到了它对应 的物理地址。,物理地址 = 段基址16偏移地址,38,每个逻辑地址对应一个唯一的物理地址,但是一个物理地址可以对应多个“逻辑地址”。 使用一个段之前应该把这个段的“段基址”装入对应的“段寄

21、存器”。 8086 CPU有4个段寄存器,因此允许同时使用4个“段”:数据段、代码段、堆栈段、附加段(另一个数据段),逻辑地址2340H: 1234H对应于物理地址 23400H+1234H=24634H。 物理地址24634H可以同时和 2463H: 0004H、2460H: 0034H、2400H: 0634H 等“逻辑地址”相对应。,39,十六位80X86微处理器的段寄存器,数据段段寄存器(Data Segment Register): DS 代码段段寄存器(Code Segment Register): CS 堆栈段段寄存器(Stack Segment Register): SS 扩展

22、段段寄存器(Extend Segment Register): ES,十六位80X86微处理器的段寄存器,在十六位微处理器原有段寄存器基础上,增加了两个数据扩展段段寄存器,命名为: FS 和 GS,40,1.2.4 总线,微型计算机的系统构成体现出以“总线”为信息“枢纽”的特点。,41,“总线(Bus)”:多个部件/设备公用的一组信号传输线。 按照传输方向,有 “输出”、 “输入” 以及 “双向”总线。 按照传输的内容,总线可以分为三组: 地址总线(Address Bus, AB),传输地址信号,输出; 数据总线(Data Bus, DB),传输数据信号,双向; 控制总线(Control Bu

23、s, CB),传输控制信号,大多数控 制信号为单向,输入或输出。,地址总线的位数决定了可以连接存储器的数量。 数据总线的位数决定了一次可以存取数据的位数。,42,43,1.2.5 外部设备和接口,外部设备用于在计算机“主机”和计算机外部之间进行信息传递,也称作“输入/输出设备”或“I/O设备”。 外部设备需要通过“输入/输出接口(Input/Output Interface)”和主机连接。 接口主要由电子器件组成,它一方面连接外部设备,另一方面通过总线与主机相连。,44,接口内有若干个寄存器,用于在CPU与外部设备之间传递信息。这些寄存器和内存储器的存储单元一样,也通过“地址”进行编号,称为“

24、端口(Port)”。CPU可以通过地址来区分和访问不同的端口。 按照传递信号的方向,有输出端口(CPU端口外部设备),输入端口(外部设备端口CPU)和双向端口。 根据端口传递信号的不同,端口分为以下三类: 数据端口 状态端口 控制端口,45,1 数据端口 数据端口传递“数据”信号。 输出设备接口内的数据输出端口: CPU 数据端口输出设备(例:打印机) 输入设备接口内的数据输入端口: 输入设备数据端口 CPU(例:键盘) 2 控制端口 控制端口传递CPU对外部设备的控制信号。 控制信号走向:CPU 控制端口 外部设备。 控制端口的传送方向总是“输出”的。,46,3 状态端口 状态端口传递和储存

25、状态信号, 状态信号走向:外部设备状态端口CPU。 状态信号的数量和表达的含义随设备而变。 输入设备:“Ready”=0,表示该设备尚未输入/虽然曾经输入, 但已经被取走,“没有”数据可读。 “Ready”=1,表示输入设备已经输入了一个数据, 并且尚未取走。 数据被“取走”后,“Ready”位自动清零。 输出设备:“Busy”=0,表示设备处于“空闲”状态,CPU可以通 过写数据端口向该设备输出一个数据。 “Busy”=1,表示该设备处于“忙碌”状态。这时, CPU不能再向它输出数据。,47,1.3.1 指令和程序 1.3.2 机器语言和汇编语言 1.3.3 高级语言,1.3 指令、程序和程

26、序设计语言,48,机器指令由若干位二进制组成 操作码:操作种类 操作数:操作对象。 机器指令可以由CPU直接执行。,指令:对计算机硬件发出的操作命令。 指令系统:某台计算机所有指令的集合。,符号指令:用“助记符”、“寄存器名”、“变量名”等记录/书写 的指令,不能由CPU直接执行。 助记符:用字母表示的符号(操作码,操作数),49,1 000 10 00 MOV R2, R0 (R2R0) 1 001 01 11 ADD R1, R3 (R1 R1+R3 ) 1 010 00 01 SUB R0, R1 (R0 R0R1 ),指令系统示例,50,实现计算R02XY的程序,51,1.4 80 x

27、86寄存器,1.4.1 数据寄存器 1.4.2 地址寄存器 1.4.3 段寄存器 1.4.4 专用寄存器 1.4.5 其它寄存器,52,16位80X86处理器有4个16位的通用数据寄存器。 AX(累加器):最常用的数据寄存器 BX(基址寄存器):存放一片内存的首地址“基址” CX(计数寄存器):存放重复操作的次数“计数器” DX(数据寄存器):存放32位数据的高16位/存放端口地址 可以拆分为2个8位寄存器使用,命名为AH,AL,BH,BL, CH,CL,DH,DL。,32位80X86处理器的4个数据寄存器扩展为32位,更名为EAX、EBX、ECX和EDX。,1.4.1 数据寄存器,53,1.

28、4.2 地址寄存器,SP(堆栈指针):存放堆栈“栈顶”的偏移地址。 BP(基址指针):用来存放堆栈中数据的偏移地址; SI(源变址寄存器):存放“源”数据区的偏移地址 DI(目的变址寄存器):存放“目的”数据区的偏移地址。 变址寄存器:存放的地址可以按照要求自动地增加/减少 地址寄存器不能再拆分使用(地址信息至少16位),32位80X86处理器的地址寄存器扩展为32位,命名为:ESP,EBP,ESI,EDI。,54,1.4.3 段寄存器,十六位80X86微处理器的段寄存器,数据段段寄存器(Data Segment Register): DS 代码段段寄存器(Code Segment Regis

29、ter): CS 堆栈段段寄存器(Stack Segment Register): SS 扩展段段寄存器(Extend Segment Register): ES,三十二位80X86微处理器的段寄存器,在十六位微处理器原有段寄存器基础上,增加了两个数据扩展段段寄存器,命名为:FS 和 GS,55,1.4.4 控制寄存器,十六位80X86微处理器的控制寄存器,指令指针寄存器(Instriction Pointer Register, IP ) 16位,存放下一条即将执行的指令的偏移地址 标志寄存器(Flag Register): Flags 16位,存放微处理器当前的状态和设置,56,OF(Ov

30、erflow Flag):溢出标志 OF=1:两个有符号数的运算结果超出范围,结果错误。 OF=0:没有溢出,结果正确。 进行无符号数运算时也会产生新的OF标志,此时无意义。,状态标志1 (OF和CF),CF(Carry Out Flag):进位/借位标志 CF=1:两个无符号数的加法运算有“进位”,或者是减法运算 有“借位”,需要对它们的“高位”进行补充处理。 CF=0:没有产生进位或借位。 进行有符号数运算时也会产生新的CF标志,此时无意义。,状态标志在每次运算后产生,57,SF(Sign Flag):符号标志, SF=1,表示运算结果的最高位为“1”。,状态标志2 (SF),对于有符号数

31、运算 OF=0时,结果正确: SF=1表示运算结果为负 SF=0表示运算结果非负(正或零) OF=1时,结果是错误的,符号位和正确值相反 例如,两个负数相加产生溢出,此时SF=0。,对于无符号数运算,SF无意义(但是可以看出结果的大小规模),状态标志在每次运算后产生,58,PF(Parity Flag):奇偶标志,可以用来进行“奇偶校验” PF=1 运算结果的低8位中有偶数个“1”(Even) PF=0 运算结果的低8位中有奇数个“1”(Odd),ZF(Zero Flag):零标志 ZF=1 运算结果为零,减法运算后结果为零意味着两个参加 运算的数大小相等。 ZF=0 运算结果非零。,状态标志

32、3 (ZF,AF,PF),AF:辅助进位标志,两个BCD数运算时b3位上的进位,供运算 后“调整”结果用,对其他数的运算没有意义。,状态标志在每次运算后产生,59,控制标志 (IF,TF,DF),控制标志的值由指令设置,DF(Direction Flag):方向标志 DF=0 执行字符串指令后,用加法修改源或目的地址指针 DF=1 用减法来修改地址,IF(Interrupt Enable Flag):中断允许标志, IF=1 允许处理器响应“可屏蔽中断请求”信号,称为“开中断” IF=0 不允许处理器响应“可屏蔽中断请求”信号,称为“关中断”。,TF(Trap Flag):单步标志 TF=1时

33、,每执行完一条指令都会产生一次“1号”中断,该程序被暂停执行。它用于程序的调试,60,1.4.5 其它寄存器,5个32位的控制寄存器,命名为CR0CR4。 CR0寄存器的PE=1表示目前系统运行在“保护模式” PG=1表示允许进行分页操作。 CR3寄存器存放“页目录表”的基地址。,32位80X86微处理器新增加的寄存器:,8个用于调试的寄存器DR0DR7,2个用于测试的寄存器TR6TR7,61,1.5 80 x86 CPU的工作模式,1.5.1 实地址模式 1.5.2 保护模式 1.5.3 虚拟8086模式,62,1.5.1实地址模式,只使用低20位地址线,地址范围0000H0FFFFFH,

34、使用1MB的内存储器; EIP,ESP,EFLAGS寄存器高16位为0,用CS:IP作为 指令指针,用SS:SP作为堆栈指针; 段寄存器内存放段起始地址的高16位,偏移地址为16位, 用“段基址16+偏移地址”的方法计算物理地址,允许使 用32位寄存器存放地址,但地址的高16位为0; 32位处理器工作在实模式时,允许使用32位寄存器存放数 据,使用32位指令进行32位数据运算。,80386以上微处理器加电启动时,自动进入实地址模式。 将CR0寄存器PE位置1,可以进入保护模式。,63,1.5.2 保护模式,“保护”:用硬件对每个任务使用的内存空间进行保护,阻 止其他任务的非法访问。,4个特权级

35、:0,1,2,3。 0级具有最高的特权,可以执行所有指令,建立和维护各种 表格,管理整个系统,供操作系统进程使用 3级最低,3级任务只能访问操作系统分配给它的内存区间, 不能执行“特权指令”,访问IO设备的权限也受到限制。 供用户程序使用。,保护模式工作特点:,64,采用32位地址寄存器,如EBX,ESI,EIP,ESP等。,采用虚拟存储管理,启用分段和分页机制。允许关闭分页机制,段内偏移地址32位,每个段最大232B=4GB,每个程序最多可以使用16K个段,理论上的虚拟地址空间为4GB16K=64TB。,65,保护模式下的寻址方式,“分段管理”: 逻辑地址仍然采用“段:偏移地址”的形式。 逻

36、辑地址通过分段管理机构转换为32位的“线性地址”。 16位段寄存器内存放的不再是20位段起始地址的高16位,而 是这个段的一个编号,称为“段选择符(Segment Selector)”。 使用这个“段选择符”查找“段描述符表(Segment Descriptor Table)”,得到这个段的32位起始地址,加上32位的偏移地 址,得到这个存储单元的32位“线性地址”。,66,“分页管理”: 32位线性地址通过分页管理机构转换为32位/36位的物理地址 所有的存储器以4KB为单位划分成“页(Page)”。 线性地址被划分成“页号”和“页内地址”两部分,根据页号查找 “页表”,得到这个页在内存真实

37、的起始地址,加上页内地址, 得到该存储单元的物理地址。 如果通过查表发现该页还在硬盘中,则还要首先启用“换页”机 制,把这个页调入内存。,67,分段机构的三张段描述符表,段描述符表 由若干个段描述符组成,每个段描述符记录一个段的相关信息,如这个段的起始地址,段的长度,段的属性等 全局段描述符表(Global Descriptor Table, GDT)整个计算机内只有一张,存放操作系统使用的各种段的信息。 局部段描述符表(Local Descriptor Table, LDT)每个任务都有一张局部段描述符表,记录这个任务使用的段的信息。 中断描述符表(Interrupt Descriptor

38、Table, IDT)记录“中断服务程序”的位置信息。,68,全局描述符表寄存器(GDTR):高32位存放“全局描述符表” 的首地址(线性地址),低16位存放该表的大小。,局部描述符表寄存器(LDTR)存放当前任务的“局部描述符表” 的“段选择符”。,中断描述符表寄存器(IDTR)记录“中断描述符表”的信息。,保护模式下的专用寄存器,69,“页目录表” 在内存的物理地址存放在CR3中。 “页表” 首地址存放在“页目录表”中。,分页机构的两类页表,70,1.5.3 虚拟8086模式,虚拟8086模式是保护模式下某一个任务所使用的局部模式。 保护模式下,将EFLAGS寄存器VM位置1,该任务就进入 “虚拟8086模式”。 32位80X86处理器给每个以“虚拟8086模式”运行的任务 “创造”了一个与真实的8086处理器十分相似的运行环境, 以便运行DOS程序。,71,采用与实模式相同的分段模式: 段寄存器内存放16位“段基址”,它左移4位后与16位偏移 地址相加,得到20位地址。寻址1MB字节的地址范围 采用分页机制,分段产生的20位地址通过分页机制转换为 32位物理地址。 使用特权级3,不能使用“特权指令”。,虚拟8086方式的特点:,72,习题一 1.1 把下列2、8、16进制数转换成

温馨提示

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

评论

0/150

提交评论