第二章80 x86计算机组织_第1页
第二章80 x86计算机组织_第2页
第二章80 x86计算机组织_第3页
第二章80 x86计算机组织_第4页
第二章80 x86计算机组织_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

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

文档简介

1、第二章80 x86计算机组织8038680486奔腾奔腾奔腾奔腾2代代奔腾奔腾4代代802868086奔腾奔腾3代代40042.2 计算机系统计算机系统 硬件:三个主要组成部分,用系统总线连接。硬件:三个主要组成部分,用系统总线连接。 总线控制总线控制 逻辑逻辑接接 口口接接 口口大容量大容量存储器存储器I/O设备设备系统总线系统总线.核心为操作系统,包括:核心为操作系统,包括:I/O驱动程序、文件管理程序、文本编辑程序等。驱动程序、文件管理程序、文本编辑程序等。应用程序是建立在操作系统之上的,我们采用应用程序是建立在操作系统之上的,我们采用nDOS(MS-DOS 6.22 或或 的的MS-D

2、OS环境),开发汇环境),开发汇编语言程序涉及到编语言程序涉及到n文本编辑器n汇编程序n连接程序n调试程序微机中的应用软件丰富多彩微机中的应用软件丰富多彩. 软件:软件:2.3 中央处理机中央处理机 它包括它包括是运算器的核心部件,执行算术运算、逻辑运算、是运算器的核心部件,执行算术运算、逻辑运算、移位、比较等各种数据处理的操作。移位、比较等各种数据处理的操作。处理程序指令,并协调各逻辑部件按一定时序处理程序指令,并协调各逻辑部件按一定时序工作。包括:从存储器中读取程序指令、指令译码、从存储器中工作。包括:从存储器中读取程序指令、指令译码、从存储器中取得操作数,执行指令,把结果存入存储器,以及

3、对总线和取得操作数,执行指令,把结果存入存储器,以及对总线和I/O的的传送控制等。传送控制等。:每一个寄存器相当于运算器中的一个存储单每一个寄存器相当于运算器中的一个存储单元,但速度比存储器快,用来存放计算过程中所需要的或得到的元,但速度比存储器快,用来存放计算过程中所需要的或得到的各种信息。各种信息。AH ALBH BLCH CLDH DLSPBPDISI通通用用寄寄存存器器运算寄存器运算寄存器ALU标志标志执行部分执行部分控制电路控制电路1 2 3 4 5 6CSDS SS ES IP内部内部寄存器寄存器I/O控制控制电路电路地址加法器地址加法器20位位16位位8位位指令队列缓冲器指令队列

4、缓冲器外外总总线线执行部件执行部件总线接口部件总线接口部件8086CPU结构图结构图寄存器是寄存器是CPU内部重要的数据存储资源,是汇编程序员能直接使内部重要的数据存储资源,是汇编程序员能直接使用的硬件资源之一。由于寄存器的存取速度比内存快,所以,在用用的硬件资源之一。由于寄存器的存取速度比内存快,所以,在用汇编语言编写程序时,要尽可能充分利用寄存器的存储功能。汇编语言编写程序时,要尽可能充分利用寄存器的存储功能。寄存器一般用来保存程序的中间结果,为随后的指令快速提供操寄存器一般用来保存程序的中间结果,为随后的指令快速提供操作数,从而避免把中间结果存入内存,再读取内存的操作。在高级作数,从而避

5、免把中间结果存入内存,再读取内存的操作。在高级语言语言(如:如:C/C+语言语言)中,也有定义变量为寄存器类型的,这就是中,也有定义变量为寄存器类型的,这就是提高寄存器利用率的一种可行的方法。提高寄存器利用率的一种可行的方法。另外,由于寄存器的个数和容量都有限,不可能把所有中间结果另外,由于寄存器的个数和容量都有限,不可能把所有中间结果都存储在寄存器中,所以,要对寄存器进行适当的调度。根据指令都存储在寄存器中,所以,要对寄存器进行适当的调度。根据指令的要求,如何安排适当的寄存器,避免操作数过多的传送操作是一的要求,如何安排适当的寄存器,避免操作数过多的传送操作是一项细致而又周密的工作。项细致而

6、又周密的工作。由于由于16位位/32位位CPU是微机是微机CPU的两个重要代表,所以,在此只的两个重要代表,所以,在此只介绍它们内部寄存器的名称及其主要功能。介绍它们内部寄存器的名称及其主要功能。通用寄存器通用寄存器专用寄存器专用寄存器 段寄存器段寄存器 AH AX AL AH AX AL BH BX BL BH BX BL CH CX CL CH CX CL DH DX DL DH DX DL SP SP BP BP SI SI DI DI IP IP FLAGS FLAGS CS CS DS DS SS SS ES ES 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬

7、兆李敬兆 汇编语言汇编语言16位寄存器组16位CPU所含有的寄存器有4个数据寄存器(AX、BX、CX和DX)2个变址和指针寄存器(SI和DI)2个指针寄存器(SP和BP)4个段寄存器(ES、CS、SS和DS)1个指令指针寄存器(IP)1 个 标 志 寄 存 器(Flags) 32位寄存器组位寄存器组32位位CPU除了包含了先前除了包含了先前CPU的所有寄存器,并把通用寄存器、指的所有寄存器,并把通用寄存器、指令指针和标志寄存器从令指针和标志寄存器从16位扩充成位扩充成32位之外,还增加了位之外,还增加了2个个16位的位的段寄存器:段寄存器:FS和和GS。 表表2.1 2.1 通用寄存器的主要用

8、途通用寄存器的主要用途用来保存操作数用来保存操作数或运算结果等信息。或运算结果等信息。 AX寄存器称为寄存器称为。使用频度最高,。使用频度最高, BX寄存器称为寄存器称为。 CX寄存器称为寄存器称为。一般作为。一般作为 DX寄存器称为寄存器称为。2.3.2.1 通用寄存器通用寄存器组 在在16位位CPU中,中,AX、BX、CX和和DX不不能作为基址和变址寄存器来存放存储单元的能作为基址和变址寄存器来存放存储单元的地址,但在地址,但在32位位CPU中,其中,其32位寄存器位寄存器EAX、EBX、ECX和和EDX不仅可传送数据、暂存数不仅可传送数据、暂存数据保存算术逻辑运算结果,而且也可作为指据保

9、存算术逻辑运算结果,而且也可作为指针寄存器,所以,这些针寄存器,所以,这些32位寄存器更具有通位寄存器更具有通用性。用性。(2) 变址寄存器变址寄存器SI是是,DI是是,在字符串操作中,在字符串操作中,SI和和DI都都。它们主要用于存放存储单它们主要用于存放存储单元段内的偏移量,用它们可实现多种存储器操作数的寻址方式元段内的偏移量,用它们可实现多种存储器操作数的寻址方式( (在第在第3 3章有详细介绍章有详细介绍) ),为以不同的地址形式访问存储单元提供,为以不同的地址形式访问存储单元提供方便。方便。 ( SP为为,用于存放当前堆栈段中,用于存放当前堆栈段中栈顶的偏移地址;栈顶的偏移地址;BP

10、 为为,用于,用于存放堆栈段中某一存储单元的偏移地址。存放堆栈段中某一存储单元的偏移地址。(1) IP 指令指针寄存器:指令指针寄存器:8086CPU中的指令指针中的指令指针IP,它总是,它总是在目标程序运行时,在目标程序运行时,如转移指令、子程序调用指令等。,如转移指令、子程序调用指令等。 32位位CPU把指令指针扩展到把指令指针扩展到32位,并记作位,并记作EIP,EIP的低的低16位位与先前与先前CPU中的中的IP作用相同。作用相同。 2.3.2.2 专用寄存器:专用寄存器: IP、SP、FLAGS(2)SP用于用于(3)标志寄存器标志寄存器 ( FLAGS / PSW ) 15 14

11、13 12 11 10 9 8 7 6 5 4 3 2 1 0: : 溢出标志溢出标志 方向标志方向标志 符号标志符号标志 中断标志中断标志 零标志零标志 陷阱标志陷阱标志 进位标志进位标志 辅助进位标志辅助进位标志 奇偶标志奇偶标志 OF DF IF TF SF ZF AF PF CF注:指令的执行与标志有很大关系。注:指令的执行与标志有很大关系。 用来用来,许多指令的执,许多指令的执行都将相应地设置它。行都将相应地设置它。 可由程序可由程序。OFOF DFDF IFIF TFTF SFSF ZFZF AFAF PFPF CFCF 8086/8088OFOF DFDF IFIF TFTF S

12、FSF ZFZF AFAF PFPF CFCF IOPLIOPLNTNT 80286 RFRF OFOF DFDF IFIF TFTF SFSF ZFZF AFAF PFPF CFCF IOPLIOPLNTNTVMVM 80386 RFRF OFOF DFDF IFIF TFTF SFSF ZFZF AFAF PFPF CFCF IOPLIOPLNTNTVMVMACAC 80486 RFRF OFOF DFDF IFIF TFTF SFSF ZFZF AFAF PFPF CFCF IOPLIOPLNTNTVMVMACACIDID VIPVIPVIFVIF31 30 29 28 27 26 25

13、 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0Pentium80 x86的标志寄存器的标志寄存器 (P.23)IOPL: I/O特权级特权级 VIP:虚拟中断未决标志:虚拟中断未决标志 NT: 嵌套任务标志嵌套任务标志 VIF:虚拟中断标志:虚拟中断标志 RF: 重新启动标志重新启动标志 VM:虚拟:虚拟8086模式位模式位 AC: 对准检查

14、方式位对准检查方式位 ID: 标识标志标识标志 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言:8086CPU的个的个16位的段寄存器分别称为位的段寄存器分别称为段寄存器用来段寄存器用来。段寄存器是根据内存分段的管理段寄存器是根据内存分段的管理模式而设置的。内存单元的物理地址由段寄存器的值和一模式而设置的。内存单元的物理地址由段寄存器的值和一个偏移量组合而成的,这样可用两个较少位数的值组合成个偏移量组合而成的,这样可用两个较少位数的值组合成一个可访问较大物理空间的内存地址。一个可访问较大物理空间的内存地址。 在在16位位CPU系统中,它只有系统中

15、,它只有4个段寄存器个段寄存器,所以,程序在任何时刻至,所以,程序在任何时刻至多有多有4个正在使用的段可直接访问;在个正在使用的段可直接访问;在32位微机系统中,它有位微机系统中,它有6个段寄存器,个段寄存器,所以,在此环境下开发的程序最多可同时访问所以,在此环境下开发的程序最多可同时访问6个段。个段。 32位位CPU有两个不同的工作方式:实方式和保护方式。在每种方式下,有两个不同的工作方式:实方式和保护方式。在每种方式下,段寄存器的作用是不同的。有关规定简单描述如下:段寄存器的作用是不同的。有关规定简单描述如下: 实方式:实方式:前前4 4个段寄存器个段寄存器CSCS、DSDS、ESES和和

16、SSSS与先前与先前CPUCPU中的所对应的段寄存器的含义完全中的所对应的段寄存器的含义完全一致,内存单元的逻辑地址仍为一致,内存单元的逻辑地址仍为“”的形式。为访问某内存段的形式。为访问某内存段内的数据,必须使用该段寄存器和存储单元的偏移量。内的数据,必须使用该段寄存器和存储单元的偏移量。保护方式:保护方式:在此方式下,情况要复杂得多,装入段寄存器的不再是段值,而是称为在此方式下,情况要复杂得多,装入段寄存器的不再是段值,而是称为“选选择子择子”(Selector)(Selector)的某个值。段寄存器的具体作用在此不作进一步介绍了,的某个值。段寄存器的具体作用在此不作进一步介绍了,有兴趣的

17、读者可参阅其它科技资料。有兴趣的读者可参阅其它科技资料。 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言2.4 存储器存储器2.4.1 存储单元的地址和内容存储单元的地址和内容 :8086系统中,为了标识和存取每一个存储单元,系统中,为了标识和存取每一个存储单元,给每个存储单元规定一个编号,这就是存储单元地址。给每个存储单元规定一个编号,这就是存储单元地址。 :一个存储单元中存放的信息称为该存储单元的一个存储单元中存放的信息称为该存储单元的内容。内容。 1 0 0 1 1 1 1 1 0 0 1 0 0 1 1 0 0 0 0 1 1 1 1 0

18、 1 1 0 1 0 1 1 1 1 0 0 1 1 1 1 10 0 1 0 0 1 1 0 存储单元中所存放的二进制信息通常称存储单元中所存放的二进制信息通常称为该存储单元的内容或值,并且规定:为该存储单元的内容或值,并且规定: 一个字节的内容是该字节单元内存放的一个字节的内容是该字节单元内存放的二进制信息;二进制信息; 一个字的内容是该字地址所指向的单元一个字的内容是该字地址所指向的单元及其后继一个单元的内容拼接而成;及其后继一个单元的内容拼接而成; 一个双字的内容是该字地址所指向的一个双字的内容是该字地址所指向的单元及其后继三个单元的内容拼接而成。单元及其后继三个单元的内容拼接而成。1

19、2340H、H的内容的内容分别为:分别为:12H和和H等;等;12340H、H的内容分的内容分别为:别为:3412H和和5634H等;等;12340H、H的内容的内容分别为:分别为:H和和H等。等。内存单元存放内容示意图内存单元存放内容示意图 我们知道:计算机的内存单元是以我们知道:计算机的内存单元是以“字节字节”为最小单位进为最小单位进行线性编址的。行线性编址的。 16位位CPU内部有内部有20根地址线,其编码区间为:根地址线,其编码区间为:00000H0FFFFFH,所以,它可直接访问的物理空间为,所以,它可直接访问的物理空间为1M(220)字节。而字节。而16位位CPU内部存放存储单元偏

20、移量的寄存器(如:内部存放存储单元偏移量的寄存器(如:IP、SP、BP、SI、DI和和BX等)都是等)都是16位,它们的编码范围仅为:位,它们的编码范围仅为:00000H0FFFFH。这样,。这样,为为了能用了能用16位寄存器来有效地访问位寄存器来有效地访问1M的存储空间,的存储空间,16位位CPU采用采用了内存分段的管理模式,并引用了内存分段的管理模式,并引用的概念。的概念。: 地址范围地址范围 H H ()机器机器:仅能表示地址范围:仅能表示地址范围 H H() 小段的首地址小段的首地址 H 0000F H H 0001F H H 0002F H H FFFFF H 物理地址的形成方式物理

21、地址的形成方式 由于规定由于规定,所以,其值的一般,所以,其值的一般形式为:形式为:H,即:,即:。鉴于段地址的这种特性,我们可以。鉴于段地址的这种特性,我们可以 在确定了某个存储单元所属的内存段后,我们也只知在确定了某个存储单元所属的内存段后,我们也只知道其道其,还,还。要想。要想确定内存单元的具体位置,还确定内存单元的具体位置,还。有了段地址和。有了段地址和偏移量,就能唯一地确定某一内存单元在存储器内的具体偏移量,就能唯一地确定某一内存单元在存储器内的具体位置。位置。 由此可见,存储单元的逻辑地址分为两部分:由此可见,存储单元的逻辑地址分为两部分:段地址和偏移量。由逻辑地址得到其物理地址段

22、地址和偏移量。由逻辑地址得到其物理地址(PAPhysical Address)的计算方法如下:的计算方法如下: 计算存储单元物理地址的公式可用计算存储单元物理地址的公式可用“左移左移4位位”和和“加加”运算来实现。图是物理地址的计算示意图。运算来实现。图是物理地址的计算示意图。物理地址物理地址偏移量偏移量段地址段地址 存储器分段:段起始地址必须是某一小段的首地址,段的大存储器分段:段起始地址必须是某一小段的首地址,段的大小可以是小可以是64K范围内的任意字节。范围内的任意字节。 段地址:段起始地址的高段地址:段起始地址的高16位,位, 物理地址物理地址 = 16d 段地址段地址 + 偏移地址偏

23、移地址 16 位位 段段 地地 址址 16 位位 偏偏 移移 地地 址址 0000+ 20 位位 物物 理理 地地 址址 ,所以,所以,。如图所示。如图所示。物理地址和逻辑地址之间的关系物理地址和逻辑地址之间的关系 存储器的逻辑地址与物理地址存储器的逻辑地址与物理地址 10011111 00100110 01001000 1000 : 0000H 1000 : 0001H1000 : 0002H1000 : 0003H1000 : 0004H1000 : 0005H 10000H10001H10002H10003H 10004H10005H 10000011 01011100 10100010

24、字节内容(10000H)9FH;(10001H)26H字内容 (10000H)269FH;(10001H)4826H访问两次内存 安徽理工大学安徽理工大学 计算机科学与技术系计算机科学与技术系 李敬兆李敬兆 汇编语言汇编语言 在汇编语言程序中,在汇编语言程序中,至于在指令中如至于在指令中如何指出存储单元的逻辑地址将在第何指出存储单元的逻辑地址将在第3章章“寻址寻址方式方式”中给出详细说明。中给出详细说明。 2 段寄存器段寄存器8086有有4个个16位段寄存器:位段寄存器:(代码段寄存器)指明(代码段寄存器)指明的起始地址的起始地址(堆栈段寄存器)指明(堆栈段寄存器)指明的起始地址的起始地址(数

25、据段寄存器)指明(数据段寄存器)指明的起始地址的起始地址(附加段寄存器)指明(附加段寄存器)指明的起始地址的起始地址每个段寄存器用来确定一个段的起始地址,每种每个段寄存器用来确定一个段的起始地址,每种段均有各自的用途。段均有各自的用途。 段寄存器是因为对内存的分段寄存器是因为对内存的分段管理而设置的。段管理而设置的。段寄存器。段寄存器及其偏移量的引用关系如图所示。及其偏移量的引用关系如图所示。 段寄存器段寄存器CS指向存放程序的指向存放程序的内存段,内存段,IP是用来存放下条待执行是用来存放下条待执行的指令在该段的偏移量,把它们合的指令在该段的偏移量,把它们合在一起可在该内存段内取到下次要在一

26、起可在该内存段内取到下次要执行的指令。执行的指令。 段和段寄存器的引用示意图段和段寄存器的引用示意图 该偏移量可该偏移量可以是具体数值、符号地址和指针寄以是具体数值、符号地址和指针寄存器的值等之一,具体情况将由指存器的值等之一,具体情况将由指令的寻址方式来决定。令的寻址方式来决定。 通常,通常,只,只有一个例外,即:有一个例外,即:。当然,在。当然,在一般指令中,我们还可以用强置前缀的方一般指令中,我们还可以用强置前缀的方法来改变操作数的段寄存器法来改变操作数的段寄存器(见:第见:第3章章中的强置前缀的书写格式中的强置前缀的书写格式) 一般情况下,段寄存器及其指针寄存器的引用关系如下一般情况下

27、,段寄存器及其指针寄存器的引用关系如下表所示。表中的表所示。表中的“。访问存储器方式访问存储器方式缺省的段缺省的段寄存器寄存器可选用的段可选用的段寄存器寄存器偏移量偏移量CS IPSS SPDSCS、ES、SS有效地址有效地址串操串操作作源操作数源操作数DSCS、ES、SSSI目标操作数目标操作数ES DI 由上表可以看出由上表可以看出16位位CPU在段寄存器的引用方面有在段寄存器的引用方面有如下规定:如下规定: 所用的段寄存器和偏移量一定是用所用的段寄存器和偏移量一定是用CS和和IP; 所用的段寄存器和偏移量一定是所用的段寄存器和偏移量一定是SS和和SP; 的目标操作数所用的段寄存器和偏移量一定的目标操作数所用的段寄存器和偏移量一定是是ES和和DI; 。 对于上述规定,随着后续内容的叙述,将会对它对于上述规定,随着后续内容的叙述,将会对它们有更进一步理解。们有更进一步理解。存储器的存储器的逻辑逻辑分段:分段: 存储器存储器64KB代码代码0150 H

温馨提示

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

评论

0/150

提交评论