《汇编语言程序设计第二章.ppt》由会员分享,可在线阅读,更多相关《汇编语言程序设计第二章.ppt(80页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第二章80X86计算机组织1.80 x86微处理器微处理器2.基于微处理器的计算机系统构成基于微处理器的计算机系统构成3.中央处理器中央处理器4.存储器存储器5.外部设备外部设备计算机的发展电子管计算机电子管计算机晶体管计算机晶体管计算机集成电路计算机集成电路计算机大、超大规模集成电路计算机大、超大规模集成电路计算机微处理器的发展第一代第一代(1971年年)Intel4004,80084/8位位2000只晶体管只晶体管/片片时钟频率:时钟频率:1MHZ第二代(第二代(1974年)年)Intel8080,8085,MotorolaMC6800,MOSTEC6502,ZilogZ80,Rockwe
2、l6502八位八位500010000晶体管晶体管/片片时钟频率:时钟频率:24MHZ微处理器的发展第三代第三代1978年年Intel8086,8088,ZilogZ8000,Motorola6800016位位2000060000晶体管晶体管/片片时钟频率:时钟频率:48MHZ1982年年Intel80186/80188,8028616位位时钟频率:时钟频率:620MHZ第四代第四代80年代初年代初向系列化方向发展向系列化方向发展Intel80386,8048632位位时钟频率:时钟频率:12.533MHZ(80386)5066MHZ(80486)微处理器的发展第五代第五代1993年年Intel
3、Pentium(Intel586),IBM,Apple,MotorolaPowerPC64位位时钟频率:时钟频率:166MHZ第六代第六代PentiumPro,MMXPentium,Pentium,Pentium,Pentium第五代和第六代微处理器的性能和速度都已经第五代和第六代微处理器的性能和速度都已经与中小型计算机抗衡,能采用与中小型计算机抗衡,能采用DOS,Windows,Windows95,Windows98,Unix等等多种操作系统,使用多种编程语言,如:多种操作系统,使用多种编程语言,如:VB,VC+,VF等等计算机系统组成:硬件、软件计算机系统的硬件组成计算机系统的硬件组成硬件
4、结构是在冯硬件结构是在冯诺依曼提诺依曼提出的计算机逻辑结构和存储程序概念的基础上出的计算机逻辑结构和存储程序概念的基础上建立。建立。存储程序存储程序将指令、数据以二进制形式将指令、数据以二进制形式存入存储器中。存放位置由地址指定存入存储器中。存放位置由地址指定,地址码地址码也是二进制码。也是二进制码。程序控制程序控制计算机在启动计算机在启动后,自动取出并执行存储器中的指令,完成预后,自动取出并执行存储器中的指令,完成预定的操作。定的操作。计算机系统的硬件结构计算机系统的硬件结构总线控制逻辑存储器RAM接口中央处理机(CPU)接口大容量存储器I/O设备I/O子系统计算机结构系统总线计算机系统的硬
5、件结构计算机系统的硬件结构系统总线系统总线:把把CPU,存储器和输入输出设备连接存储器和输入输出设备连接起来,用来传送各部分之间的信息。起来,用来传送各部分之间的信息。系统总线包括数据总线、地址总线和控制总线系统总线包括数据总线、地址总线和控制总线三组。三组。数据总线:传送信息。数据总线:传送信息。8088CPU内部的数据线是内部的数据线是16位,但位,但CPU与存储器、与存储器、I/O端口之间是端口之间是8位位80286内内/外数据线都是外数据线都是16位宽,是位宽,是16位位的微处理器。的微处理器。80486有有32位数据线,一次可传输位数据线,一次可传输4个字个字节的数据。节的数据。信息
6、流向是双向流动。信息流向是双向流动。计算机系统的硬件结构计算机系统的硬件结构控制总线控制总线CB(controlbus)向各向各部件发出(或接受)控制信号。部件发出(或接受)控制信号。不同不同的的CPU,其条数不同。其条数不同。信息流向大部分是单向的:或者是信息流向大部分是单向的:或者是CPU发出的操作命令;或者是其他部件向发出的操作命令;或者是其他部件向CPU提出的请求信号。提出的请求信号。少数控制线是双向控制线。少数控制线是双向控制线。计算机系统的硬件结构计算机系统的硬件结构地址总线地址总线AB(addressbus)传输地址信传输地址信息,用来寻址存储单元和息,用来寻址存储单元和I/O端
7、口。其端口。其“宽度宽度”决定了内存的最大容量:决定了内存的最大容量:8088/8086有有20根地址线,能寻址根地址线,能寻址1兆内存;兆内存;80286有有24根地址线,能寻址根地址线,能寻址16兆内存;兆内存;80486有有32根地址线,能寻址根地址线,能寻址4G内存;内存;信息流向通常是单向,由信息流向通常是单向,由CPU发出地址信息。发出地址信息。计算机系统软件组成计算机系统软件组成计算机软件是计算机系统的重要组成部计算机软件是计算机系统的重要组成部分,他可以分为系统软件和用户软件两分,他可以分为系统软件和用户软件两大类大类系统软件:由计算机生产厂家提供给用系统软件:由计算机生产厂家
8、提供给用户的一组程序,这些程序是用户使用机户的一组程序,这些程序是用户使用机器时产生、准备和执行用户程序所必须器时产生、准备和执行用户程序所必须的。的。用户软件:是用户自行编制的各种程序用户软件:是用户自行编制的各种程序操作系统常驻监督程序操作系统常驻监督程序文文件件管管理理程程序序I/o驱驱动动程程序序调调试试程程序序文文本本编编辑辑程程序序翻翻译译程程序序连连接接程程序序装装入入程程序序系系统统程程序序库库系系统统软软件件用户软件用户程序用户程序用户程序库用户程序库计算机软件层次图计算机系统软件组成计算机系统软件组成操作系统:系统软件的核心。是系统程序的集操作系统:系统软件的核心。是系统程
9、序的集合,它的主要作用是对系统的硬软件资源进行合,它的主要作用是对系统的硬软件资源进行合理的管理,为用户创造方便,有效和可靠的合理的管理,为用户创造方便,有效和可靠的计算机工作环境;操作系统的主要部分是常驻计算机工作环境;操作系统的主要部分是常驻监督程序,只要一开机它就存在于内存中,它监督程序,只要一开机它就存在于内存中,它可以从用户接收命令,并使操作系统执行相应可以从用户接收命令,并使操作系统执行相应的动作。的动作。I/O驱动程序:用来对驱动程序:用来对I/O设备进行控制或管理。设备进行控制或管理。当系统程序或用户程序需要使用当系统程序或用户程序需要使用I/O设备时,设备时,就调用就调用I/
10、O设备驱动程序来对设备发出命令,设备驱动程序来对设备发出命令,完成完成CPU和和I/O设备之间的信息传送;设备之间的信息传送;计算机系统软件组成计算机系统软件组成文件管理系统:用来处理存储在外存储文件管理系统:用来处理存储在外存储器中的大量信息,它可以和外存储器的器中的大量信息,它可以和外存储器的设备驱动程序相连接,对存储在其中的设备驱动程序相连接,对存储在其中的信息以文件的形式进行存取,复制及其信息以文件的形式进行存取,复制及其它管理工作。它管理工作。文件编辑程序:用来建立,输入或修改文件编辑程序:用来建立,输入或修改文本,并使它存入内存储器或大容量存文本,并使它存入内存储器或大容量存储器中
11、。储器中。计算机系统软件组成计算机系统软件组成翻译程序:连接程序,装入程序,调试程序翻译程序:连接程序,装入程序,调试程序连接程序:用来把要执行的程序与库文件或其连接程序:用来把要执行的程序与库文件或其它已经翻译好的子程序连接在一起,形成机器它已经翻译好的子程序连接在一起,形成机器能执行的程序;能执行的程序;装入程序:用来把程序从外存储器传送到内存装入程序:用来把程序从外存储器传送到内存储器,以便机器执行。储器,以便机器执行。调试程序:是系统提供给用户的能监督和控制调试程序:是系统提供给用户的能监督和控制用户程序的一种工具,它可以装入,修改,显用户程序的一种工具,它可以装入,修改,显示或逐条执
12、行一个程序。示或逐条执行一个程序。翻译程序:机器语言计算机能直接执行的语言汇编语言一种助记符语言不能直接执行高级语言汇编程序中央处理器中央处理器Intel1989年年4月推出的月推出的32位微处理器。位微处理器。7大部分组成大部分组成:运算部分运算部分,控制部分控制部分,译码译码部分部分,控制部分控制部分,运算部分运算部分,存储管理部分存储管理部分,高速缓冲存储器高速缓冲存储器.存储器空间高达存储器空间高达246即即64TB(KGB),),多多种寄存器、丰富的数据类型。种寄存器、丰富的数据类型。80486基本结构介绍基本结构介绍中央处理器中央处理器运算部分运算部分包括定点运算部件(算术逻辑单包
13、括定点运算部件(算术逻辑单元元ALU、移位器和寄存器组)和浮点运算部件移位器和寄存器组)和浮点运算部件(浮点运算单元(浮点运算单元PLU、浮点寄存器组)。浮点寄存器组)。存储管理部分存储管理部分为实现虚拟存储器而设置。为实现虚拟存储器而设置。分段部件管理逻辑地址空间分段部件管理逻辑地址空间(46位),并把逻位),并把逻辑地址转换为辑地址转换为32位线性地址。位线性地址。分页部件把线性地址转换为物理地址(分页部件把线性地址转换为物理地址(32位位)高速缓冲存储器高速缓冲存储器(cache)为提高运算速为提高运算速度,度,8K,存储最近运行程序所需的代码和数据存储最近运行程序所需的代码和数据。指令
14、预取部件指令预取部件有两个有两个16字节的队列寄存器,字节的队列寄存器,每次从每次从cache最多可取最多可取16字节的信息。字节的信息。中央处理器中央处理器译码部分译码部分指令译码器对指令的操作指令译码器对指令的操作码进行翻译,并通过指令总线送控制部码进行翻译,并通过指令总线送控制部件。件。控制部件控制部件产生微指令,对运算部件、产生微指令,对运算部件、存储管理部件、指令译码器发控制信存储管理部件、指令译码器发控制信号。号。总线接口部分总线接口部分产生访问外部存储器产生访问外部存储器和和I/O接口所需的地址、数据、命令。接口所需的地址、数据、命令。寄存器组寄存器组分分4类:类:基本结构寄存器
15、基本结构寄存器应用程序可访问应用程序可访问系统级寄存器系统级寄存器浮点寄存器浮点寄存器系统皆可访问系统皆可访问调试和测试寄存器调试和测试寄存器基本结构寄存器基本结构寄存器通用寄存器通用寄存器专用寄存器专用寄存器段寄存器段寄存器通用寄存器通用寄存器用于存放数据或地址,可进行用于存放数据或地址,可进行32位、位、16位、位、8位、位、1位运算。位运算。8个个32位的:位的:EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP。其低其低16位可独立使用,称:位可独立使用,称:AX,BX,CX,DX,SI,DI,BP,SP。可作为可作为8位寄存器使用是:位寄存器使用是:AH,AL,BH,BL
16、,CH,CL,DH,DL。通用寄存器通用寄存器通用寄存器通用寄存器思考:思考:执行执行MOVEAX,12345678H后后EAX,AX,AH,AL的值。的值。AX:累加器。累加器。1、算术运算的主要寄存器。、算术运算的主要寄存器。2、I/O指令中与外部设备传送数据。指令中与外部设备传送数据。BX:基址寄存器。用于计算存储器的地址。基址寄存器。用于计算存储器的地址。CX:计数器。在循环指令和串处理指令中用计数器。在循环指令和串处理指令中用做隐含的计数器。做隐含的计数器。DX:数据寄存器。数据寄存器。1、算术中存放双字的高位字。、算术中存放双字的高位字。2、I/o操作中,存放端口地址。操作中,存放
17、端口地址。通用寄存器通用寄存器SP堆栈指针寄存器:堆栈指针寄存器:与与SS寄存器联用,表示堆寄存器联用,表示堆栈的栈顶栈的栈顶的偏移地址。的偏移地址。BP基址指针寄存器:与基址指针寄存器:与SS寄存器联用,表示堆寄存器联用,表示堆栈中的任栈中的任一字单元的偏移地址。一字单元的偏移地址。SI源变址寄存器:与源变址寄存器:与DS寄存器联用,用来确定寄存器联用,用来确定数据段中某一存储单元的地址。数据段中某一存储单元的地址。DI目的变址寄存器:与目的变址寄存器:与DS寄存器联用,用来确寄存器联用,用来确定数据段中某一存储单元的地址。定数据段中某一存储单元的地址。SI,DI有自动增减量的功能。在串处理
18、指令中有自动增减量的功能。在串处理指令中SI与与DS,DI与与ES联用。联用。通用寄存器通用寄存器段寄存器段寄存器指出代码和数据指出代码和数据所用的存储空间。有所用的存储空间。有6个个16位的位的。CS代码段寄存器:存放程序段的段代码段寄存器:存放程序段的段地址地址DS数据段寄存器:存放指定数据段数据段寄存器:存放指定数据段的段地址的段地址SS堆栈段寄存器:提供堆栈区的段堆栈段寄存器:提供堆栈区的段地址地址ES扩展段寄存器扩展段寄存器FS,GS专用寄存器专用寄存器指令指针寄存器指令指针寄存器堆栈指针寄存器堆栈指针寄存器标志寄存器标志寄存器指令指针寄存器指令指针寄存器指令指针寄存器指令指针寄存器
19、放相对于代码段基址的偏放相对于代码段基址的偏移量,指向计算机即将执行的指令。移量,指向计算机即将执行的指令。32位的寄存器,称位的寄存器,称EIP,其低其低16位可独立使用,位可独立使用,称称IP。IP指令指针寄存器:它用来存放代码段中的偏指令指针寄存器:它用来存放代码段中的偏移地址。在程序执行过程中,始终指向下一条移地址。在程序执行过程中,始终指向下一条指令的首地址,与指令的首地址,与CS寄存器联用确定下一条指寄存器联用确定下一条指令的物理地址。当这一地址送到存储器后,控令的物理地址。当这一地址送到存储器后,控制器可以取得下一条要执行的指令,而控制器制器可以取得下一条要执行的指令,而控制器一
20、旦取得这条指令就马上修改一旦取得这条指令就马上修改IP的内容的内容使它指使它指向下一条指令的首地址。向下一条指令的首地址。计算机就是使用计算机就是使用IP寄存器来控制指令序列的执寄存器来控制指令序列的执行流程的行流程的标志寄存器标志寄存器EFLAGS:32位,各位可分为位,各位可分为状态标志状态标志指明程序执行时微处理器指明程序执行时微处理器的实时状态。如:进位、溢出等。的实时状态。如:进位、溢出等。控制标志控制标志由程序设计者设置,以控由程序设计者设置,以控制制80486进行某种操作。进行某种操作。其低其低16位可独立使用,称位可独立使用,称FLAGS,实模实模式下很有用式下很有用标志寄存器
21、标志寄存器C标志标志进位进位/借位标志,主要用于多借位标志,主要用于多字节的加、减运算,当最高位有产生进字节的加、减运算,当最高位有产生进位位/借位,则借位,则C标志置标志置1,否则为,否则为0。移位。移位和循环移位也影响和循环移位也影响C标志。标志。P标志标志奇偶标志,奇偶标志,P标为标为1,表示操作,表示操作结果的低结果的低8位有偶数个位有偶数个“1”。用于检查。用于检查数据在传输过程是否出错。数据在传输过程是否出错。标志寄存器标志寄存器A标志标志辅助进位辅助进位/借位标志。表示:借位标志。表示:加加/减时,最低减时,最低4位向高位产生了进位或位向高位产生了进位或借位。借位。Z标志标志全零
22、标志。置为全零标志。置为1,表示操作,表示操作结果为结果为0。标志寄存器标志寄存器S标志标志符号标志。置为符号标志。置为1,表示结果数据的,表示结果数据的最高位为最高位为“1”。O标志标志溢出标志。置为溢出标志。置为1,表示运算结果,表示运算结果产生溢出。产生溢出。CPU硬性规定:参与运算的操作数都是有符号硬性规定:参与运算的操作数都是有符号数,所以,当两数的符号相同而且与结果的符数,所以,当两数的符号相同而且与结果的符号位相异时,号位相异时,O标置标置1。程序设计时,如果定义操作数是有符号数,测程序设计时,如果定义操作数是有符号数,测试试O标志,为标志,为1,表示溢出。如果定义操作数是,表示
23、溢出。如果定义操作数是无符号数,测试无符号数,测试C标志,为标志,为1,表示溢出。,表示溢出。标志寄存器标志寄存器D标志标志方向标志。用于控制字符串操作指令中方向标志。用于控制字符串操作指令中地址变化的方向。地址变化的方向。执行指令执行指令STD,D标志置标志置1,串指针(,串指针(SIDI)自自动减量,即减址调整。动减量,即减址调整。执行指令执行指令CLD,D标志置标志置0,串指针(,串指针(SIDI)自自动增量,即增址调整。动增量,即增址调整。I标志标志中断允许标志。控制中断允许标志。控制CPU是否响应外部是否响应外部可屏蔽中断(可屏蔽中断(INTR)请求。请求。执行执行STI指令,指令,
24、I标志置为标志置为1,CPU响应可屏蔽中断。响应可屏蔽中断。执行执行CLI指令,指令,I标志置为标志置为0,CPU不响应可屏蔽中不响应可屏蔽中断。断。I标志不影响外部非屏蔽中断(标志不影响外部非屏蔽中断(NMI)或内部中断。或内部中断。标志寄存器标志寄存器T标志标志陷阱标志。用于单步调试程序。陷阱标志。用于单步调试程序。T标志为标志为1时,时,CPU每执行一条指令后都产生每执行一条指令后都产生一个内部中断。一个内部中断。T标志为标志为0时,时,CPU连续执行指令。连续执行指令。IOPL标志标志I特权级标志,占位,表特权级标志,占位,表示级级个示级级个I/O特权级,其中级最高。特权级,其中级最高
25、。用于保护模式下操作,指明执行用于保护模式下操作,指明执行指令所需的优先级。指令所需的优先级。标志寄存器标志寄存器T标志标志任务嵌套标志。在保护模式下,任务嵌套标志。在保护模式下,如果当前任务如果当前任务A嵌套在另一任务嵌套在另一任务B内,则内,则NT=1,指示指示CPU,A任务执行完毕后要返回到任务执行完毕后要返回到B任任务中。务中。R标志标志恢复标志,与调试寄存器配合使用。恢复标志,与调试寄存器配合使用。当当CPU响应响应“断点异常中断断点异常中断”时,时,R标志置标志置1,然后标志寄存器压栈再转入相应的断点处理程然后标志寄存器压栈再转入相应的断点处理程序。此时,若遇到调试故障也不在产生异
26、常中序。此时,若遇到调试故障也不在产生异常中断,断点处理程序结束后返回断点指令,断,断点处理程序结束后返回断点指令,R自自动复位。动复位。标志寄存器标志寄存器VM标志标志虚拟标志。虚拟标志。CPU在保护模式下使在保护模式下使VM=1,转换为虚拟转换为虚拟86操作模式。操作模式。80486就象一就象一个高速的个高速的8086CPU在运行在运行8086的指令流。的指令流。AC标志标志对准标志。对准标志。AC=1时,如果进行未时,如果进行未对准的地址访问,则产生异常中断。对准的地址访问,则产生异常中断。未对准的地址访问指:未对准的地址访问指:访问字操作数时,从奇地址开始。访问字操作数时,从奇地址开始
27、。访问双字操作数时,地址不是访问双字操作数时,地址不是4的整数倍。的整数倍。访问访问4字操作数时,地址不是字操作数时,地址不是8的整数倍。的整数倍。标志寄存器标志寄存器VIF:虚拟中断标志虚拟中断标志VIP:虚拟中断未决标志。虚拟中断未决标志。VIP和和VIF组合组合在一起,允许许多任务环境下的应用程在一起,允许许多任务环境下的应用程序又能虚拟的系统序又能虚拟的系统IF标志,标志,VIF即为即为IF位位的虚拟映象。的虚拟映象。ID:标识标志,程序有设置和清除标识标志,程序有设置和清除ID标识标识的能力,以指示处理机对的能力,以指示处理机对CPUID指令的指令的支持支持练练习习1、MOVAL,6
28、6ADDAL,51执行后执行后AL的结果及各个状态标志的值。的结果及各个状态标志的值。2、MOVAL,66SUBAL,51执行后执行后AL的结果及各个状态标志的值。的结果及各个状态标志的值。调试程序调试程序DEBUG中的中的PSW的表示的表示标志名标志名标志标志=1标志标志=0OF溢出(是溢出(是/否)否)OV(over)NV(noover)DF方向(减量方向(减量/增量)增量)DN(down)UP(Up)IF中断(允许中断(允许/禁止)禁止)EI(enableInterrupt)DI(disableInterrupt)SF符号(负符号(负/正)正)NG(nogreat)PL()ZF零(是零(
29、是/否)否)ZR(zero)NZ(nozero)AF辅助进位(是辅助进位(是/否)否)AC(auxiliarycarry)NA(noauxiliary)PF奇偶(偶奇偶(偶/奇)奇)PE(parityeven)PO(parityodd)CF进位(是进位(是/否)否)CY(carry)NC(nocarry)系统级寄存器系统级寄存器控制着控制着80486微处理器的片内微处理器的片内cache、运运算部分的浮点部件以及存储管理部件。算部分的浮点部件以及存储管理部件。含有含有4个控制寄存器和个控制寄存器和4个系统地址寄存个系统地址寄存器。(系统程序使用)。器。(系统程序使用)。控制寄存器控制寄存器CR
30、0,CR1,CR2,CR3为为32位的位的CR0保存系统的控制和状态信息。保存系统的控制和状态信息。CR1Intel保留保留CR2保留了所检测到的上一个页面保留了所检测到的上一个页面故障得故障得32位线性地址。位线性地址。CR3保留页目录表的物理基址。保留页目录表的物理基址。控制寄存器控制寄存器控制寄存器控制寄存器PE为保护虚拟地址方式位为保护虚拟地址方式位MP为监视协处理器位。为监视协处理器位。EM为仿真协处理器位。为仿真协处理器位。TS为任务转换位。为任务转换位。ET为协处理器类型位。为协处理器类型位。NE为数学运算错位。为数学运算错位。WP为写保护位。为写保护位。AM为对齐标志位。为对齐
31、标志位。NW为不透写位。为不透写位。CD为为Cache不允许位。不允许位。PG为页式管理允许位。为页式管理允许位。PWT为为Cache的页级透写位。的页级透写位。PCD为页级为页级Cache允许位允许位全局描述符表寄存器全局描述符表寄存器GDTR中断描述符表寄存器中断描述符表寄存器IDTR局部描述符表寄存器局部描述符表寄存器LDTR任务状态寄存器任务状态寄存器TR系统地址寄存器系统地址寄存器保护方式寄存器保护方式寄存器例:若例:若(GDTR)=080000000FFFH的含的含义义调试寄存器调试寄存器调试寄存器调试寄存器DR0DR3用于设置数据用于设置数据存取断点和代码执行断点。存取断点和代码
32、执行断点。调试断点寄存器:调试断点寄存器:DR6指明断点的指明断点的当前状态。当前状态。调试控制寄存器调试控制寄存器DR7选择调试功能选择调试功能和设置断点。和设置断点。DR4,DR5保留。保留。测试寄存器测试寄存器TR3TR7(5个个32位)位)用于测试片内用于测试片内cache和和用旁视缓冲区用旁视缓冲区TLBTR3:片内片内cache测试控制测试控制TR4:片内片内cache测试数据测试数据TR5:片内片内cache测试状态测试状态TR6:TLB(快表快表)测试控制测试控制TR7:TLB(快表快表)测试状态测试状态存储器存储器基本概念基本概念位:一位二进制数位:一位二进制数字节:八位二进
33、制数字节:八位二进制数字:二个相邻字节组成的字:二个相邻字节组成的16位二进制数位二进制数双字:四个相邻字节组成的双字:四个相邻字节组成的32位二进制数位二进制数1Byte=8bits1Word=2Bytes=16bits1Dword=2Words=4Bytes=32Bits1K=2101M=2201G=2301T=24076543210IBMPC机的字长为16位,由2个字节组成,位编号如下:1514131211109876543210字7654321076543210高位字节MSB低位字节LSB存储单元的地址和内容存储单元的地址和内容计算机存储信息的基本单位是一个二进制位,一位可存计算机存储
34、信息的基本单位是一个二进制位,一位可存储一个二进制数:储一个二进制数:0或或1。每。每8位组成一个字节。位编号如位组成一个字节。位编号如下:下:存储单元的地址和内容存储单元的地址和内容在存储器中以字节为单位存储信息。为了正确的存储信在存储器中以字节为单位存储信息。为了正确的存储信息,每一个字节单元给以一个编号即存储器地址。息,每一个字节单元给以一个编号即存储器地址。地址的编号规则:从地址的编号规则:从0开始编号顺次地每次加开始编号顺次地每次加1。在机器。在机器里,地址是用无符号二进制数来表示的,书写格式为里,地址是用无符号二进制数来表示的,书写格式为十六进制数。十六进制数。数据在内存中的存储方
35、式数据在内存中的存储方式单字节数据的存储单字节数据的存储一个字节占用内存的一个地址,称为一个存储单元。一个字节占用内存的一个地址,称为一个存储单元。存储单元的地址即为该字节的地址。存储单元的地址即为该字节的地址。多字节数据的存储多字节数据的存储高高位位字字节节在在地地址址号号高高的的存存储储单单元元中中,低低位位字字节节在在地地址址号低的存储单元中。号低的存储单元中。多多字字节节数数据据的的地地址址为为该该数数据据最最低低字字节节存存放放的的存存储储单单元元的地址。的地址。存储单元的内容存储单元的内容如果用如果用X表示某存储器的地址,则表示某存储器的地址,则X单元的内容可以表示单元的内容可以表
36、示为为(X);假如假如X单元中存放着单元中存放着Y,而,而Y又是一个地址,则可以又是一个地址,则可以用用(Y)=(X)来表示来表示Y的内容。的内容。如如:(0004H)=1234H(1234H)=2F1EH(0004H)=2F1EH存储器访问的时间问题存储器访问的时间问题在8086和80286机器中,访问内存都是以字为单位进行的,也就是说,机器是以偶地址访问存储器的。以奇地址访问内存则要花费二倍的时间。在80386极其后继的32位处理机中,双字单元地址为4的整数倍时,访问存储器的速度可以较快,同样,4字单元的地址为8的整数倍时,访问速度最快。存储器的特性存储器的特性存储器的内容是取之不尽的,即
37、取出内容后,原单元的内容不变。直到存入新的内容。实模式存储器寻址实模式存储器寻址存储器访问问题的解决方法(存储器地址的分段):存储器访问问题的解决方法(存储器地址的分段):IBMPC机的地址总线机的地址总线20根,既寻址为根,既寻址为220。IBMPC机的机内字长机的机内字长16位,即能表示的地址为位,即能表示的地址为216。如何使如何使16位机内字长的位机内字长的IBMPC机能够访问机能够访问20位地址空间?位地址空间?采用存储器分段:既把存储器划分成多个段,每段的大小可以达到采用存储器分段:既把存储器划分成多个段,每段的大小可以达到64K,这样段内的地址可以用这样段内的地址可以用16位表示
38、。位表示。段起始地址的限制:段起始地址的限制:必须以小段的首地址开始。必须以小段的首地址开始。小段:从小段:从0地址开始每地址开始每16字节为一个小段。字节为一个小段。从存储器从存储器0地址开始的小段:地址开始的小段:00000H,00001H,00002H,00003H,00004H,00005H,.,0000EH,0000FH00010H,00011H,00012H,00013H,00014H,00015H,.,0001EH,0001FH.FFFF0H,FFFF1H,FFFF2H,FFFF3H,FFFF4H,FFFF5H.,FFFFEH,FFFFFH共共64K个小段。第一列就是每个小段的首
39、地址。个小段。第一列就是每个小段的首地址。物理地址物理地址:每一个存储单元的唯一的:每一个存储单元的唯一的20位的地址。位的地址。逻辑地址逻辑地址:由:由16位段地址和位段地址和16位偏移地址组成的存储器地址位偏移地址组成的存储器地址表示方式。书写为表示方式。书写为=16位段地址:位段地址:16位偏移地址位偏移地址物理地址与逻辑地址的对应关系物理地址与逻辑地址的对应关系:物理地址物理地址=16D段地址段地址+偏移地址偏移地址段段寄存器:寄存器:IBMPC机中,有四个专用的存放地址的寄存器。分别是机中,有四个专用的存放地址的寄存器。分别是代码段代码段CS,数据段数据段DS,堆栈段堆栈段SS,附加
40、段附加段ES。代码段代码段CS:存放当前正在运行的程序。存放当前正在运行的程序。数据段数据段DS:存放当前运行程序的所用的数据。存放当前运行程序的所用的数据。堆栈段堆栈段SS:一种数据结构。一种数据结构。附加段附加段ES:附加的数据区,起辅助作用。附加的数据区,起辅助作用。80386及其后续机型:及其后续机型:FS,GS除非专门指定,一般情况下,各段在存储器中的分配是由除非专门指定,一般情况下,各段在存储器中的分配是由操作系统负责的。每个段可以独立占用操作系统负责的。每个段可以独立占用64K存储区,各段也存储区,各段也可以允许重叠可以允许重叠各段在存储器中的分配各段在存储器中的分配由操作系统负
41、责由操作系统负责,可独立可独立,也可重叠也可重叠CSDSSSES01500H1CD00H42000HB0000H64KB附加数据附加数据64KB数据数据64KB堆栈堆栈64KB代码代码B000H1CD0H4200H0150H例例:如果代码段中的程序占有:如果代码段中的程序占有8K(2000H)存储区,数存储区,数据段占有据段占有2K存储区,堆栈段只占有存储区,堆栈段只占有256字节的存储区,此字节的存储区,此时段区的分配如下:时段区的分配如下:0480H0400H0200HCSDSSSES存储器256B堆栈堆栈2KB数据数据8KB代码代码02000H04000H04800H80X86中,段寄存
42、器和与其对应存放偏中,段寄存器和与其对应存放偏移地址的寄存器之间的缺省组合关系移地址的寄存器之间的缺省组合关系8086、8088,80286:段段偏移偏移CSIPSSSP或或BPDSBX,DI,SI或一个或一个16位数位数ESDI80X86中,段寄存器和与其对应存放偏中,段寄存器和与其对应存放偏移地址的寄存器之间的缺省组合关系移地址的寄存器之间的缺省组合关系80386及其后继机型及其后继机型段段偏移偏移CSEIPSSESP或或EBPDSEAX,EBX,ECX,EDX,EDI,ESI或一个或一个8位数或一个位数或一个32位数位数ESEDIFS无缺省无缺省GS无缺省无缺省保护模式保护模式从从802
43、86开始具有的保护模式最具特色。开始具有的保护模式最具特色。逻辑地址逻辑地址:在保护模式下,逻辑地址由:在保护模式下,逻辑地址由选择器和偏移地址两部分组成,选择器选择器和偏移地址两部分组成,选择器存放在段寄存器中,但它不能直接表示存放在段寄存器中,但它不能直接表示段基地址,而由操作系统通过一定的方段基地址,而由操作系统通过一定的方法取得段基地址,再和偏移地址相加,法取得段基地址,再和偏移地址相加,从而求得所选存储单元的物理地址。从而求得所选存储单元的物理地址。与实模式区别与实模式区别:偏移地址为偏移地址为32位长位长,最大最大段长可从段长可从64KB扩大到扩大到4GB.段描述符:从段描述符:从
44、80386开始,段描开始,段描述符均由述符均由8个字节个字节(64位位)构成构成80386、80486和和Pentium段描述符:段描述符:段描述符的构成段描述符的构成线性基地址线性基地址(24/32位位)用来指示某段的起始用来指示某段的起始地址。地址。段限制段限制(16/20位位)用来限制一段的最大长度。用来限制一段的最大长度。G位位:粒度位。用于定义段限制所使用的单位。粒度位。用于定义段限制所使用的单位。G=0:段长的粒度单位为字节;段长的粒度单位为字节;G=1:段长的粒度单位为页段长的粒度单位为页;每页大小为每页大小为4KB.例:例:(1)20位的段界限在不同情况下可定义位的段界限在不同
45、情况下可定义的段长。的段长。(2)段起始于)段起始于F00000H单元并结束于单元并结束于F000FFH单元,则单元,则80286中该段的起始地址和中该段的起始地址和界限为多少?界限为多少?80386中,若中,若G=0,则则80386中该中该段的起始地址和界限为多少?段的起始地址和界限为多少?段描述符的构成段描述符的构成D/B位对于不同类型的段,有不同解释:位对于不同类型的段,有不同解释:对于代码段,对于代码段,D=1为操作数及有效地址为为操作数及有效地址为32位;位;D=0为为16位操作。位操作。对于堆栈段,对于堆栈段,B=1为使用为使用32位位ESP且界限值为且界限值为FFFFFFFFH;
46、B=0为使用为使用16位位SP且上限为且上限为FFFFH。对于数据段,对于数据段,B=1为为32位操作;位操作;B=0为兼容为兼容80286。AVL位为系统软件所利用位位为系统软件所利用位。访问权限各位如下图所示。访问权限各位如下图所示。访问权限各位的定义访问权限各位的定义访问权限各位的定义访问权限规定了段描述符所定义段的属访问权限规定了段描述符所定义段的属性。例如,性。例如,P位规定该段是否存在,位规定该段是否存在,P=1该段已该段已装入物理存储器;装入物理存储器;DPL两位编码用来规定特权两位编码用来规定特权级;级;S=1表示代码段或属于数据段,表示代码段或属于数据段,S=0则表示则表示该
47、段为系统段;该段为系统段;E=1表示代码段,表示代码段,E=0表示数表示数据类段。据类段。ED/C和和W/R对数据类段和代码段具有对数据类段和代码段具有不同含义:不同含义:(1)对于代码段:对于代码段:C=1为一致性代码段(该段允许特权级为一致性代码段(该段允许特权级与它相同或比它低的程序调用或通过与它相同或比它低的程序调用或通过JMP指令指令转入);转入);C=0表示非一致性代码段(低特权级表示非一致性代码段(低特权级的程序对高特权级的一致性段的调用或转入将的程序对高特权级的一致性段的调用或转入将产生保护异常。)产生保护异常。)R=1表示可读代码段;表示可读代码段;R=0表示只能执表示只能执
48、行不可读的代码段。行不可读的代码段。访问权限各位的定义访问权限各位的定义(2)对数据类段:对数据类段:ED=0表示该段为向上扩展段,偏移地址表示该段为向上扩展段,偏移地址必须小于或等于段限制。数据起始于基地址,必须小于或等于段限制。数据起始于基地址,并朝基地址加上界限值的方向向上扩展。并朝基地址加上界限值的方向向上扩展。ED=1表示表示该段为向下扩展段,偏移表示表示该段为向下扩展段,偏移地址必须大于段限制。即堆栈段。堆栈段的界地址必须大于段限制。即堆栈段。堆栈段的界限值指示堆栈段的低界限,儿其上界限值是一限值指示堆栈段的低界限,儿其上界限值是一个全个全1的地址值。的地址值。W=0表示该段不可写
49、;表示该段不可写;W=1表示可写。表示可写。A=1表示该段已被访问过;表示该段已被访问过;A=0表示该段表示该段未曾访问过。未曾访问过。选择器和描述符表选择器和描述符表选择器存放于段寄存器中,选择器存放于段寄存器中,16位长,其位长,其格式为:格式为:RPL:请求特权级。是对该存储段请求访问的特权级,其值为03,0级特权级最高;如RPL和该段描述符中的DPL相等或RPLDPL则允许对该段的访问;TI:选择位,TI=0:指示从全局描述符GDT中选择描述符;TI=1:指示从局部描述符LDT中选择描述符外部设备外部设备外部设备与主机(外部设备与主机(CPU和存储器)的通信是通过和存储器)的通信是通过
50、外设接口进行的。每个接口包括一组寄存器。外设接口进行的。每个接口包括一组寄存器。数据寄存器:用来存放数据寄存器:用来存放要在外设和主机间传送要在外设和主机间传送的数据,这种寄存器实际上起缓冲器的作用。的数据,这种寄存器实际上起缓冲器的作用。状态寄存器:用来保存外部设备或接口的状态状态寄存器:用来保存外部设备或接口的状态信息,以便信息,以便CPU在必要时测试外设的状态,了在必要时测试外设的状态,了解外设的工作情况。解外设的工作情况。命令寄存器:命令寄存器:CPU给外设或接口的控制命令通给外设或接口的控制命令通过此寄存器送给外部设备。过此寄存器送给外部设备。端口地址端口地址为使主机访问外设方便起见