计算机组成原理指令_第1页
计算机组成原理指令_第2页
计算机组成原理指令_第3页
计算机组成原理指令_第4页
计算机组成原理指令_第5页
已阅读5页,还剩82页未读, 继续免费阅读

下载本文档

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

文档简介

1、计算机组成原理第第四四章章 指令系统指令系统 课程教学要求本章内容本章内容: 4.1 4.1 指令系统的发展与性能要求指令系统的发展与性能要求 4.2 4.2 指令格式指令格式 4.3 4.3 指令和数据的寻址方式指令和数据的寻址方式 4.4 4.4 堆栈寻址方式堆栈寻址方式 4.5 4.5 典型指令典型指令 本章小结本章小结4.1 指令系统的发展和性能要求指令系统的发展和性能要求 4.1.1 指令系统的发展指令系统的发展4.1.2 对指令系统性能的要求对指令系统性能的要求4.1.3 低级语言与硬件结构的关系低级语言与硬件结构的关系指令系统指令系统4.1.1指令系统的发展指令系统的发展 计算机

2、的计算机的程序程序是由一系列的指令组成的。是由一系列的指令组成的。 指令指令: : 就是要计算机执行某种操作的命令。就是要计算机执行某种操作的命令。从计算机组成的层次结构来说,计算机的指令有从计算机组成的层次结构来说,计算机的指令有微指令微指令、机器指令机器指令和和宏指令宏指令之分。之分。微指令微指令:微程序级的命令,它属于硬件;:微程序级的命令,它属于硬件;宏指令宏指令:由若干条机器指令组成的软件指令,它属于软件;:由若干条机器指令组成的软件指令,它属于软件;机器指令机器指令(指令):介于微指令与宏指令之间,每条指令(指令):介于微指令与宏指令之间,每条指令可完成一个独立的算术运算或逻辑运算

3、。可完成一个独立的算术运算或逻辑运算。 指令系统指令系统:一台计算机中所有机器指令的集合,它是表:一台计算机中所有机器指令的集合,它是表征一台计算机性能的重要因素,其格式与功能不仅直接影响到征一台计算机性能的重要因素,其格式与功能不仅直接影响到机器的硬件结构,也直接影响到系统软件,影响到机器的适用机器的硬件结构,也直接影响到系统软件,影响到机器的适用范围。范围。指令系统指令系统计算机指令系统的发展过程计算机指令系统的发展过程 5050年代年代:指令系统只有定点加减、逻辑运算、数据传送、:指令系统只有定点加减、逻辑运算、数据传送、转移等十几至几十条指令。转移等十几至几十条指令。 6060年代后期

4、年代后期:增加了乘除运算、浮点运算、十进制运算、:增加了乘除运算、浮点运算、十进制运算、字符串处理等指令,指令数目多达一二百条,寻址方式也趋多字符串处理等指令,指令数目多达一二百条,寻址方式也趋多样化。样化。 6060年代后期开始出现年代后期开始出现系列计算机系列计算机( (指基本指令系统相同、指基本指令系统相同、基本体系结构相同的一系列计算机基本体系结构相同的一系列计算机) )。一个系列往往有多种型。一个系列往往有多种型号,它们在结构和性能上有所差异。同一系列的各机种有共同号,它们在结构和性能上有所差异。同一系列的各机种有共同的指令级,而且新推出的机种指令系统只是的指令级,而且新推出的机种指

5、令系统只是“升级升级”,其包含,其包含所有旧机种的全部指令所有旧机种的全部指令, ,旧机种上运行的各种软件可以不加任旧机种上运行的各种软件可以不加任何修改便可在新机种上运行,大大减少了何修改便可在新机种上运行,大大减少了软件开发软件开发费用。费用。指令系统指令系统7070年代末期年代末期: : 大多数计算机的指令系统多达几百条。我们称这些计大多数计算机的指令系统多达几百条。我们称这些计算机为算机为复杂指令系统计算机复杂指令系统计算机(CISC)。 但是如此庞大的指令系统难以保证正确性,不易调试但是如此庞大的指令系统难以保证正确性,不易调试维护,造成硬件资源浪费。为此人们又提出了易于采用维护,造

6、成硬件资源浪费。为此人们又提出了易于采用VLSI技术实现的技术实现的精简指令系统计算机精简指令系统计算机(RISC)。指令系统指令系统4.1.2对指令系统性能的要求对指令系统性能的要求 指令系统的性能决定了计算机的基本功能,它指令系统的性能决定了计算机的基本功能,它的设计直接关系到计算机的硬件结构和用户的需的设计直接关系到计算机的硬件结构和用户的需要。要。一个完善的指令系统应满足如下四方面的要一个完善的指令系统应满足如下四方面的要求:求:完备性、有效性、规整性、兼容性完备性、有效性、规整性、兼容性。指令系统指令系统 完备性:完备性:用汇编语言编写各种程序时,指用汇编语言编写各种程序时,指令系统

7、直接提供的指令足够使用,而不必用软件来令系统直接提供的指令足够使用,而不必用软件来实现。完备性要求指令系统丰富、功能齐全、使用实现。完备性要求指令系统丰富、功能齐全、使用方便。方便。 有效性:有效性:利用该指令系统所编写的程序能够利用该指令系统所编写的程序能够高效率的运行。高效率主要表现在程序占据存储空高效率的运行。高效率主要表现在程序占据存储空间小、执行速度快。一般来说,一个功能更强、更间小、执行速度快。一般来说,一个功能更强、更完善的指令系统,必定有更好的有效性。完善的指令系统,必定有更好的有效性。 规整性:规整性:规整性包括指令系统的规整性包括指令系统的对称性对称性、匀匀齐性齐性、指令格

8、式和数据格式的一致性指令格式和数据格式的一致性。对称性对称性指在指令系统中所有的寄存器和存储器指在指令系统中所有的寄存器和存储器单元都可同等对待,所有的指令都可使用各种寻址单元都可同等对待,所有的指令都可使用各种寻址方式;方式;匀齐性匀齐性是指一种操作性质的指令可以支持各种是指一种操作性质的指令可以支持各种数据类型;数据类型;指令格式和数据格式的一致性指令格式和数据格式的一致性是指指令长度和是指指令长度和数据长度有一定的关系,以方便处理和存取。数据长度有一定的关系,以方便处理和存取。 兼容性:兼容性:系列机各机种之间具有相同的基本系列机各机种之间具有相同的基本结构和共同的基本指令集,因而指令系

9、统是兼容结构和共同的基本指令集,因而指令系统是兼容的,即各机种上基本软件可以通用。但由于不同机的,即各机种上基本软件可以通用。但由于不同机种推出的时间不同,在结构和性能上有差异,做到种推出的时间不同,在结构和性能上有差异,做到所有软件都完全兼容是不可能的,只能做到所有软件都完全兼容是不可能的,只能做到“向上向上兼容兼容”,即低档机上运行的软件可以在高档机上运,即低档机上运行的软件可以在高档机上运行。行。4.1.3低级语言与硬件结构的关系低级语言与硬件结构的关系 计算机语言具有高级语言和低级语言之分。计算机语言具有高级语言和低级语言之分。高级语言高级语言 如如C,FORTRAN等,其语句和用法与

10、具体机器等,其语句和用法与具体机器的指令系统无关。的指令系统无关。低级语言低级语言 分分机器语言机器语言(二进制语言)和(二进制语言)和汇编语言汇编语言(符号语(符号语言)。言)。 低级语言都是面向机器的语言,和具体机器的指令系统密切低级语言都是面向机器的语言,和具体机器的指令系统密切相关。机器语言用指令代码编写程序,而符号语言则用指令助相关。机器语言用指令代码编写程序,而符号语言则用指令助记符来编写程序。记符来编写程序。下表列出了高级语言与低级语言的性能比较。下表列出了高级语言与低级语言的性能比较。指令系统指令系统比较内容比较内容高级语言高级语言低级语言低级语言1对程序员的训练要求对程序员的

11、训练要求(1)通用算法通用算法(2)语言规则语言规则(3)硬件知识硬件知识有有较少较少不要不要有有较多较多要要2对机器独立的程度对机器独立的程度独立独立不独立不独立3编制程序的难易程度编制程序的难易程度易易难难4编制程序所需时间编制程序所需时间短短较长较长5程序执行时间程序执行时间 较长较长短短6编译过程中对计算机资源编译过程中对计算机资源的要求的要求多多少少 计算机能够直接识别和执行的唯一语言是计算机能够直接识别和执行的唯一语言是二进制语言二进制语言,但,但人们采用人们采用符号语言符号语言或或高级语言高级语言编写程序。为此,必须借助编写程序。为此,必须借助汇编汇编程序程序或或编译程序编译程序

12、,把符号语言或高级语言翻译成二进制码组成,把符号语言或高级语言翻译成二进制码组成的的机器语言机器语言。 汇编语言汇编语言依赖于计算机的依赖于计算机的硬件结构硬件结构和和指令系统指令系统。不同的机。不同的机器有不同的指令,所以用汇编语言编写的程序不能在其他类型器有不同的指令,所以用汇编语言编写的程序不能在其他类型的机器上运行。的机器上运行。 高级语言高级语言与计算机的硬件结构及指令系统与计算机的硬件结构及指令系统无关无关,在编写程,在编写程序方面比汇编语言优越。但是高级语言程序序方面比汇编语言优越。但是高级语言程序“看不见看不见”机器的机器的硬件结构,不能用于编写直接访问机器硬件资源的系统软件或

13、硬件结构,不能用于编写直接访问机器硬件资源的系统软件或设备控制软件。为此,一些高级语言提供了与汇编语言之间的设备控制软件。为此,一些高级语言提供了与汇编语言之间的调用接口。用汇编语言编写的程序,可作为高级语言的一个调用接口。用汇编语言编写的程序,可作为高级语言的一个外外部过程或函数部过程或函数,利用,利用堆栈堆栈来传递参数或参数的地址。来传递参数或参数的地址。指令系统指令系统4.2 指令格式指令格式 4.2.1 操作码操作码4.2.2 地址码地址码4.2.3 指令字长度指令字长度4.2.4 指令助记符指令助记符4.2.5 指令格式举例指令格式举例指令系统指令系统4.2.1操作码操作码 指令字指

14、令字(简称指令)即表示一条指令的机器字。(简称指令)即表示一条指令的机器字。指令格式指令格式 则是指令字用二进制代码表示的结构形则是指令字用二进制代码表示的结构形式,由式,由操作码操作码字段和字段和地址码地址码字段组成。字段组成。操作码字段操作码字段: : 表征指令的操作特性与功能;表征指令的操作特性与功能; 地址码字段地址码字段: : 通常指定参与操作的操作数的地址。通常指定参与操作的操作数的地址。指令系统指令系统操作码字段操作码字段 地址码字段地址码字段 指令系统的每一条指令都有一个操作码,它表示该指令应指令系统的每一条指令都有一个操作码,它表示该指令应进行什么性质的操作。进行什么性质的操

15、作。不同的指令用操作码字段的不同编码来表示,每一种编码不同的指令用操作码字段的不同编码来表示,每一种编码代表一种指令。代表一种指令。 组成操作码字段的位数一般取决于计算机指令系统的规模。组成操作码字段的位数一般取决于计算机指令系统的规模。例如例如:一个指令系统只有:一个指令系统只有8 8条指令,则有条指令,则有3 3位操作码就够;如果位操作码就够;如果有有3232条指令,那么就需要条指令,那么就需要5 5位操作码。位操作码。 对于一个机器的指令系统,在指令字中操作码字段和地对于一个机器的指令系统,在指令字中操作码字段和地址码字段长度通常是固定的。址码字段长度通常是固定的。 在单片机中,由于指令

16、字较短,为了充分利用指令字长在单片机中,由于指令字较短,为了充分利用指令字长度,指令字的操作码字段和地址码字段是不固定的,即不同类度,指令字的操作码字段和地址码字段是不固定的,即不同类型的指令有不同的划分,以便尽可能用较短的指令字长来表示型的指令有不同的划分,以便尽可能用较短的指令字长来表示越来越多的操作种类,并在越来越大的存储空间中寻址。越来越多的操作种类,并在越来越大的存储空间中寻址。 指令系统指令系统4.2.2地址码地址码 根据一条指令中有几个操作数地址,可将该指令根据一条指令中有几个操作数地址,可将该指令称为几操作数指令或几地址指令。称为几操作数指令或几地址指令。一般的操作数有一般的操

17、作数有被操作数被操作数、操作数操作数及及操作结果操作结果这这三种数,因而就形成了三地址指令格式。在此基三种数,因而就形成了三地址指令格式。在此基础上,后来又发展成二地址格式、一地址格式和零地础上,后来又发展成二地址格式、一地址格式和零地址格式,址格式,如下图所示:如下图所示:指令系统指令系统操作码操作码A1A2A3操作码操作码A1A2操作码操作码A操作码操作码三地址指令三地址指令 二地址指令二地址指令 单地址指令单地址指令 零地址指令零地址指令 三地址指令字中有三个操作数地址。三地址指令字中有三个操作数地址。(A1)OP(A2)A3A1为被操作数地址,也称源操作数地址;为被操作数地址,也称源操

18、作数地址;A2为操作数为操作数地址,也称终点(目的)操作数地址;地址,也称终点(目的)操作数地址;A3为存放结果的地址。为存放结果的地址。同样,同样,A1,A2,A3既可以是内存中的单元地址,也可以是运算既可以是内存中的单元地址,也可以是运算器中通用寄存器的地址。器中通用寄存器的地址。表示把操作(运算)结果传送到表示把操作(运算)结果传送到指定的地方。指定的地方。单地址指令又称为单操作数指令。通常这种指令通常单地址指令又称为单操作数指令。通常这种指令通常以运算器中累加寄存器以运算器中累加寄存器AC中的数据为被操作数,指令字的中的数据为被操作数,指令字的地址码字段所指明的数为操作数,操作结果又放

19、回累加寄地址码字段所指明的数为操作数,操作结果又放回累加寄存器存器AC中。中。(AC)OP(A)ACOP表示操作性质;(表示操作性质;(AC)表示累加寄存器)表示累加寄存器AC中的数;中的数;(A)表示内存中地址为)表示内存中地址为A的存储单元中的数或运算器中地的存储单元中的数或运算器中地址为址为A的通用寄存器中的数;的通用寄存器中的数;二地址指令常称为双操作数指令,它的两个地址码二地址指令常称为双操作数指令,它的两个地址码字段分别指明参与操作的两个数在内存中或运算字段分别指明参与操作的两个数在内存中或运算器中通用寄存器的地址,器中通用寄存器的地址,A1又作存放操作结果的地址。又作存放操作结果

20、的地址。(A1)OP(A2)A1零地址指令的指令字中只有操作码,而没有地零地址指令的指令字中只有操作码,而没有地址码。址码。 二地址指令格式中,从操作数的物理位置来说,又可归结二地址指令格式中,从操作数的物理位置来说,又可归结为如下三种类型:为如下三种类型: 存储器存储器-存储器(存储器(SS)型指令)型指令 : 操作时都是涉及内存单元,参与操作的数都放在内存里,操作时都是涉及内存单元,参与操作的数都放在内存里,从内存某单元中取操作数,操作结果存放至内存另一单元中,从内存某单元中取操作数,操作结果存放至内存另一单元中,机器执行这种指令需要多次访问内存,因此执行速度较慢。机器执行这种指令需要多次

21、访问内存,因此执行速度较慢。 寄存器寄存器-寄存器(寄存器(RR)型指令)型指令 : 参与操作的数都在寄存器中,因此需要多个通用寄存器或个参与操作的数都在寄存器中,因此需要多个通用寄存器或个别专用寄存器。从寄存器中取操作数,把操作结果放到另一寄别专用寄存器。从寄存器中取操作数,把操作结果放到另一寄存器。机器执行寄存器存器。机器执行寄存器- -寄存器型指令的速度很快,因为执行这寄存器型指令的速度很快,因为执行这类指令,不需要访问内存。类指令,不需要访问内存。 寄存器寄存器-存储器(存储器(RS)型指令)型指令 :一个操作数在寄存器中,另一:一个操作数在寄存器中,另一操作数在存储器中。操作数在存储

22、器中。 因此,执行此类指令时,既要访问内存单元,又要访问寄存因此,执行此类指令时,既要访问内存单元,又要访问寄存器。器。 指令系统指令系统4.2.3指令长度指令长度 指令字长度指令字长度:一个指令字中包含二进制代码的位:一个指令字中包含二进制代码的位数。数。机器字长机器字长:计算机能直接处理的二进制数据的位:计算机能直接处理的二进制数据的位数,它决定了计算机的运算精度。数,它决定了计算机的运算精度。 单字长指令单字长指令:指令长度等于机器字长度;:指令长度等于机器字长度; 半字长指令半字长指令:指令长度等于半个机器字长度的指:指令长度等于半个机器字长度的指令;令; 双字长指令双字长指令:指令长

23、度等于两个机器字长度的指:指令长度等于两个机器字长度的指令。令。指令系统指令系统例如,例如,IBM370IBM370系列,它的指令格式有系列,它的指令格式有1616位(半字)位(半字)的,有的,有3232位(单字)的,还有位(单字)的,还有4848位(一个半字)的。位(一个半字)的。在在PentiumPentium系列机中,指令格式也是可变的:有系列机中,指令格式也是可变的:有8 8位、位、1616位、位、3232位、位、6464位不等。位不等。 使用多字长指令,使用多字长指令,目的目的在于提供足够的地址位来在于提供足够的地址位来解决访问内存任何单元的寻址问题。其主要解决访问内存任何单元的寻址

24、问题。其主要缺点缺点是必是必须两次或多次访问内存以取出一整条指令,降低了须两次或多次访问内存以取出一整条指令,降低了CPUCPU的运算速度,又占用了更多的存储空间。的运算速度,又占用了更多的存储空间。( (当然,当然, 若采用指令流水线、多体交叉存储等技术,可以较好若采用指令流水线、多体交叉存储等技术,可以较好地解决此问题)地解决此问题) 等长指令字结构等长指令字结构 : : 各种指令字长度是相等的。各种指令字长度是相等的。这种指令字结构简单,且指令字长度是不变的。这种指令字结构简单,且指令字长度是不变的。 变长指令字结构变长指令字结构 : : 指令字的长度随指令功能而指令字的长度随指令功能而

25、变化。这种指令字结构灵活,能充分利用指令长度,变化。这种指令字结构灵活,能充分利用指令长度,但指令的译码及控制较复杂。但指令的译码及控制较复杂。 指令系统指令系统4.2.4指令助记符指令助记符 由于计算机硬件只能识别由于计算机硬件只能识别1 1和和0 0,所以必须采用二,所以必须采用二进制操作码作为机器码。但是我们用二进制数来直接进制操作码作为机器码。但是我们用二进制数来直接书写程序却非常麻烦。书写程序却非常麻烦。 为了便于书写和阅读程序,每条指令通常用为了便于书写和阅读程序,每条指令通常用3 3个或个或4 4个英文缩写字母来表示。这种缩写字符叫做个英文缩写字母来表示。这种缩写字符叫做指令助记

26、指令助记符符。指令系统指令系统111LDA读数读数110STR存储存储101JSR转子转子100JMP跳转跳转011MOV传送传送010SUB减法减法001ADD加法加法二进制操作码二进制操作码指令助记符指令助记符典典型型指指令令表表4.2典型的指令助记符典型的指令助记符 如如上表上表所示,这里我们假定指令系统只有所示,这里我们假定指令系统只有7 7条指令,条指令,所以操作码只需所以操作码只需3 3位二进制。位二进制。 由于指令助记符提示了由于指令助记符提示了每条指令的意义,因此比较容易记忆,书写起来比较每条指令的意义,因此比较容易记忆,书写起来比较方便,阅读程序容易理解。方便,阅读程序容易理

27、解。需要注意的是需要注意的是:在不同的计算机中,指令助记符在不同的计算机中,指令助记符的规定是不一样的。因此,指令助记符还必须转换成的规定是不一样的。因此,指令助记符还必须转换成与它们相对应的二进制码(与它们相对应的二进制码(机器码机器码)。这种转换借助)。这种转换借助汇编程序可以自动完成,汇编程序相当于一个汇编程序可以自动完成,汇编程序相当于一个“翻翻 译译”。 指令系统指令系统4.2.5指令格式举例指令格式举例 1.1.八位微型计算机的指令格式八位微型计算机的指令格式 8 8位微型机字长只有位微型机字长只有8 8位,指令结构常采用可变字位,指令结构常采用可变字长形式,包含单字长、双字长、三

28、字长指令等多种。长形式,包含单字长、双字长、三字长指令等多种。指令系统指令系统操作码操作码 操作码操作码 (单字长指令)(单字长指令) (双字长指令)(双字长指令) (三字长指令)(三字长指令) 若内存按字节编址,则对于若内存按字节编址,则对于8 8位机来说,单字长指令每执行位机来说,单字长指令每执行一条指令后,指令地址加。双字长指令或三字长指令每执行一条指令后,指令地址加。双字长指令或三字长指令每执行一条指令时,指令地址要加一条指令时,指令地址要加2 2或加或加3 3,可见多字长的指令格式不,可见多字长的指令格式不利于提高机器速度。利于提高机器速度。操作数地址操作数地址操作码操作码 操作数地

29、址操作数地址1操作数地址操作数地址22.PDP/11系列机指令格式系列机指令格式 PDP/11系列机为系列机为16位机,其指令字长位机,其指令字长16位,其指位,其指令格式如下表所示。令格式如下表所示。表表4.3PDP/11系列机指令格式系列机指令格式 指令系统指令系统从表中看出,在从表中看出,在PDP/11PDP/11中,操作码字段是不固定的,中,操作码字段是不固定的,其长度也是不相同的。这样做可以扩展操作码以包含较多其长度也是不相同的。这样做可以扩展操作码以包含较多的指令。但是操作码字段不固定,对控制器的设计来说必的指令。但是操作码字段不固定,对控制器的设计来说必将复杂化。将复杂化。3.p

30、entium指令格式指令格式 PentiumPentium机的指令字长度也是可变的:机的指令字长度也是可变的:从字节从字节到到1212字节,还可以带前缀字节,还可以带前缀。指令格式如下所示:。指令格式如下所示:指令系统指令系统0或或10或或10或或10或或1(字节数)(字节数)指令前缀指令前缀 段取代段取代操作数长度取代操作数长度取代地址长度取代地址长度取代1或或20或或10或或10,1,2,40,1,2,4操作码操作码 ModReg或或操作码操作码R/M 比例比例S 变址变址I基址基址B位移量位移量立即数立即数2位位3位位3位位2位位3位位3位位(字节数字节数) 指令的前缀是可选项,其作用是

31、对其后的指令指令的前缀是可选项,其作用是对其后的指令本身进行显示约定。每个前缀占个字节。本身进行显示约定。每个前缀占个字节。 这种非固定长度的指令格式是典型的这种非固定长度的指令格式是典型的CICSCICS结构特征。一是结构特征。一是为了与它的前身为了与它的前身8048680486保持兼容,二是希望能给编译程序的编制保持兼容,二是希望能给编译程序的编制以更多灵活的编程支持。以更多灵活的编程支持。 指令前缀指令前缀包括包括LOCKLOCK(锁定)前缀和重复前缀。(锁定)前缀和重复前缀。LOCKLOCK前缀前缀用于多用于多CPUCPU环境中对共享存储器的排他性访问。环境中对共享存储器的排他性访问。

32、重重复前缀复前缀用于字符串的重复操作,以获得比软件循环方法更用于字符串的重复操作,以获得比软件循环方法更快的速度。快的速度。段取代前缀段取代前缀根据指令的定义和程序的上下文,一条指令所使用的段寄存器根据指令的定义和程序的上下文,一条指令所使用的段寄存器名称可以不出现在指令格式名称可以不出现在指令格式中,这称为段缺省规则。当要求一条指令不按缺省规则使用某个段寄存器时,中,这称为段缺省规则。当要求一条指令不按缺省规则使用某个段寄存器时,必须以段取代前缀明确指明必须以段取代前缀明确指明此段寄存器。此段寄存器。 操作数长度取代前缀和地址长度取代前缀操作数长度取代前缀和地址长度取代前缀在实地在实地址模式

33、下,操作数和地址的默认长度是址模式下,操作数和地址的默认长度是16位;在保护位;在保护模式下,若模式下,若D1,操作数和地址的默认长度是,操作数和地址的默认长度是32位,若位,若D0,二者的默认长度是,二者的默认长度是16位。位。指令本身由操作码字段、指令本身由操作码字段、Mod-R/M字段、字段、SIB字段、位移量字段、立即数字段组成。除操字段、位移量字段、立即数字段组成。除操作码字段外,其他四个字段都是可选字段。作码字段外,其他四个字段都是可选字段。 Mod-R/MMod-R/M字段:字段:规定了存储器操作数的寻址方规定了存储器操作数的寻址方式,给出了寄存器操作数的寄存器地址号。式,给出了

34、寄存器操作数的寄存器地址号。 SIBSIB字段字段:和和Mod-R/MMod-R/M字段一起,对操作字段一起,对操作数来源进行完整的说明。数来源进行完整的说明。 例例1指令格式如下所示,其中指令格式如下所示,其中OP为操作码,试分析指为操作码,试分析指令格式的特点。令格式的特点。指令系统指令系统1597430OP-源寄存器源寄存器 目标寄存器目标寄存器解解: (1)(1)单字长二地址指令。单字长二地址指令。 (2)(2)操作码字段操作码字段OPOP长度为长度为7 7位,可以指定位,可以指定128128条指令。条指令。 (3)(3)源寄存器和目标寄存器都是通用寄存器(可分别指定源寄存器和目标寄存

35、器都是通用寄存器(可分别指定1616个)个). .两个操作数均在寄存器中,所以是两个操作数均在寄存器中,所以是RRRR型指令,。型指令,。 (4)(4)这种指令结构常用于算术逻辑运算类指令。这种指令结构常用于算术逻辑运算类指令。 例例2指令格式如下所示,其中指令格式如下所示,其中OP为操作码,试为操作码,试分析指令格式的特点。分析指令格式的特点。(教材教材P134)指令系统指令系统1597430OP-源寄存器源寄存器 变址寄存器变址寄存器位移量位移量(16位位)解解: (1)双字长二地址指令;双字长二地址指令; (2)操作码字段操作码字段OP为为6位,可以指定位,可以指定26=64种操作。种操

36、作。 (3)一个操作数在源寄存器中(一个操作数在源寄存器中(可以指定可以指定24=16个寄存器个寄存器),),另一个操作数在存储器中(另一个操作数在存储器中(由变址寄存器和位移量决定由变址寄存器和位移量决定),所所以是以是RS型指令。型指令。4.3 指令和数据的寻址方式指令和数据的寻址方式 4.3.1 指令的寻址方式指令的寻址方式4.3.2 操作数寻址方式操作数寻址方式4.3.3 寻址方式举例寻址方式举例指令系统指令系统4.3.1指令的寻址方式指令的寻址方式 操作数或指令在存储器中的地址操作数或指令在存储器中的地址:某个操作数或:某个操作数或某条指令存放在某个存储单元时,其存储单元的编某条指令

37、存放在某个存储单元时,其存储单元的编号,就是该操作数或指令在存储器中的号,就是该操作数或指令在存储器中的地址地址。 寻址方式寻址方式 :形成指令或操作数的内存地址的方形成指令或操作数的内存地址的方式,称为式,称为寻址方式寻址方式。 寻址方式的类别寻址方式的类别 : (1 1)指令寻址方式指令寻址方式,用于形成指令在内存中的,用于形成指令在内存中的地址。地址。 (2 2)数据寻址方式数据寻址方式,用于形成操作数在内存中,用于形成操作数在内存中的地址。的地址。指令系统指令系统 相对于指令寻址方式来说,数据寻址方式要复相对于指令寻址方式来说,数据寻址方式要复杂些,在传统方式设计的计算机中,内存中指令

38、的杂些,在传统方式设计的计算机中,内存中指令的寻址和数据的寻址是交替进行的。寻址和数据的寻址是交替进行的。 指令寻址方式有两种指令寻址方式有两种: : (1) (1) 顺序寻址方式顺序寻址方式 (2) (2) 跳跃寻址方式。跳跃寻址方式。1.顺序寻址方式顺序寻址方式 指令地址在内存中按顺序安排,当执行一段程序指令地址在内存中按顺序安排,当执行一段程序时,通常是一条指令接一条指令的顺序执行。从存储时,通常是一条指令接一条指令的顺序执行。从存储器取出第一条指令,然后执行这条指令;接着从存储器取出第一条指令,然后执行这条指令;接着从存储器取出第二条指令,在执行第二条指令;接着再取出器取出第二条指令,

39、在执行第二条指令;接着再取出第三条指令第三条指令。这种程序顺序执行的过程,我们称。这种程序顺序执行的过程,我们称为指令的为指令的顺序寻址方式顺序寻址方式。为此,必须使用程序计数器(又称指令指针寄存为此,必须使用程序计数器(又称指令指针寄存器)器)PCPC来计数指令的顺序号,该顺序号就是指令在内来计数指令的顺序号,该顺序号就是指令在内存中的地址。存中的地址。指令系统指令系统由由PC指出程序在指出程序在内存中的地址。内存中的地址。2.跳跃寻址方式跳跃寻址方式 当程序转移执行的顺序时,指令的寻址就采取当程序转移执行的顺序时,指令的寻址就采取跳跳跃寻址方式跃寻址方式。所谓。所谓跳跃跳跃: : 是指下条

40、指令的地址码不是是指下条指令的地址码不是顺序地由程序计数器顺序地由程序计数器PCPC给出,而是由本条指令给出。给出,而是由本条指令给出。 由于程序跳转后,将按新的指令地址开始顺序执由于程序跳转后,将按新的指令地址开始顺序执行。所以,程序计数器行。所以,程序计数器PCPC的内容也必须相应改变,以的内容也必须相应改变,以便及时跟踪新的指令地址。便及时跟踪新的指令地址。 采用指令的采用指令的跳跃寻址方式跳跃寻址方式,可以实现程序转移或,可以实现程序转移或构成循环程序,从而能缩短程序长度,或将某些程序构成循环程序,从而能缩短程序长度,或将某些程序作为公共程序引用。作为公共程序引用。 指令系统中的各种条

41、件转移或无条件转移指令,指令系统中的各种条件转移或无条件转移指令,就是为了实现指令的跳跃寻址而设置的。就是为了实现指令的跳跃寻址而设置的。 (演示)(演示) 指令系统指令系统4.3.2操作数寻址方式操作数寻址方式 定义定义 :形成操作数的有效地址的方法,称为:形成操作数的有效地址的方法,称为: :操作数的寻址方式操作数的寻址方式。例如:某单地址指令的结构如下所示,其中用例如:某单地址指令的结构如下所示,其中用X、I、D各各字段组成该指令的字段组成该指令的操作数地址字段操作数地址字段。 即:指令中操作数字段所给出的地址码,即:指令中操作数字段所给出的地址码,是由形是由形式地址式地址D和寻址方式特

42、征位和寻址方式特征位X、I等组合形成。等组合形成。 指令系统指令系统形式地址形式地址D变址变址X间址间址I操作码操作码OP操作码字段操作码字段操操作作数数字字段段 一般来说一般来说: 指令中所给出的指令中所给出的地址码地址码,并不直接,并不直接是操作数的是操作数的有效地址有效地址。而操作数的寻址过程,就是把。而操作数的寻址过程,就是把操作数的形式地址操作数的形式地址D(也称偏移量),经过指定的变(也称偏移量),经过指定的变换,最后形成操作数的有效地址。换,最后形成操作数的有效地址。 因此,操作数的寻址过程就是把操作数的形式地因此,操作数的寻址过程就是把操作数的形式地址,变换为操作数的有效地址址

43、,变换为操作数的有效地址E的过程。的过程。 由于大型机、小型机、微型机和单片机结构不由于大型机、小型机、微型机和单片机结构不同,从而形成了各种不同的操作数寻址方式。同,从而形成了各种不同的操作数寻址方式。指令系统指令系统1.隐含寻址隐含寻址 特点特点:在指令中不明显的给出操作数的:在指令中不明显的给出操作数的地址。(地址。(将地址隐含将地址隐含) 例如:例如: 单地址的指令格式:单地址的指令格式: DIV BLDIV BL 在指令地址字段中,没有指明第二操作数在指令地址字段中,没有指明第二操作数地址,而是规定累加寄存器地址,而是规定累加寄存器A AC C作为第二操作数作为第二操作数地址,地址,

44、A AC C对单地址指令格式来说就是一个对单地址指令格式来说就是一个隐含隐含地址地址。指令系统指令系统AX BL,商存,商存AL中,中,余数存余数存AH中。中。通常,操作数有如下几种寻址方式通常,操作数有如下几种寻址方式: 2.立即寻址立即寻址 特点特点:指令的地址字段指出的不是操作数:指令的地址字段指出的不是操作数S S的的地址,而直接是操作数地址,而直接是操作数S本身,即:本身,即:S = D。 这种方式中,由于指令中直接给出了操作数这种方式中,由于指令中直接给出了操作数S,不需要通过访问内存来取数,因而,指令执行时间很不需要通过访问内存来取数,因而,指令执行时间很短。例如:某单地址的移位

45、指令格式为:短。例如:某单地址的移位指令格式为: 这里这里D不是地址,而是一个操作数不是地址,而是一个操作数S。F为标志位为标志位,当当F1,操作数进行右移;当,操作数进行右移;当F0时,操作数进行左时,操作数进行左移。移。 例:指令例:指令 MOV AX,100H,其中,其中100H就是操作就是操作数本身,而不是地址。数本身,而不是地址。指令系统指令系统OP(OP(移位移位) )F FD D3.直接寻址直接寻址 直接寻址特点直接寻址特点: 在指令格式的地址字段中在指令格式的地址字段中,直接给出操作数在内存的地址直接给出操作数在内存的地址D,即:,即:E=D采用直接寻址方式时,指令字中的形式地

46、采用直接寻址方式时,指令字中的形式地址址D,就是操作数的有效地址,就是操作数的有效地址E,既:,既:ED。因。因此,通常把形式地址此,通常把形式地址D又称为直接地址。又称为直接地址。 此时,由寻址模式给予指示。此时,由寻址模式给予指示。 如果用如果用S表表示操作数,那么直接寻址的逻辑表达式为:示操作数,那么直接寻址的逻辑表达式为: S(E)()(D) (演示)(演示)指令系统指令系统4.间接寻址间接寻址 特点特点:指令地址字段中的形式地址:指令地址字段中的形式地址D不是操作数的真正有不是操作数的真正有效地址效地址E,而是存放操作数地址的内存单元地址。,而是存放操作数地址的内存单元地址。 即:即

47、:D单元的内容才是操作数的有效地址单元的内容才是操作数的有效地址。 如果把直接寻址和间接寻址结合起来,指令有如下形式:如果把直接寻址和间接寻址结合起来,指令有如下形式: 寻址特征位寻址特征位 I0,表示直接寻址,这时有效地址:,表示直接寻址,这时有效地址:ED;I1,表示间接寻址,这时有效地址:,表示间接寻址,这时有效地址:E(D)。 间接寻址方式是早期计算机中经常采用的方式,但由于间接寻址方式是早期计算机中经常采用的方式,但由于两次访存,影响指令执行速度,现在已不大使两次访存,影响指令执行速度,现在已不大使 用。用。 (演示)(演示)指令系统指令系统操作码操作码I ID D5.寄存器寻址方式

48、和寄存器间接寻址方式寄存器寻址方式和寄存器间接寻址方式 寄存器寻址方式的特点寄存器寻址方式的特点:当操作数不放在内存中,而是放:当操作数不放在内存中,而是放在在CPU的通用寄存器中时,可采用寄存器寻址方式。此时指令的通用寄存器中时,可采用寄存器寻址方式。此时指令中给出的操作数地址不是内存的地址单元号,而是通用寄存器中给出的操作数地址不是内存的地址单元号,而是通用寄存器的编号。的编号。 例如,指令:例如,指令: ADD R0,R1; (R0)+(R1)- R0 (操作数在寄存器中操作数在寄存器中)寄存器间接寻址方式寄存器间接寻址方式的特点的特点: 指令格式中所指定的寄存器中的内容不是操作数,而是

49、指令格式中所指定的寄存器中的内容不是操作数,而是操作操作数的地址数的地址。即:。即:E =(Ri)显然,这种方式所指明的显然,这种方式所指明的操作数是在操作数是在内存中内存中!指令系统指令系统6.相对寻址方式相对寻址方式 特点特点:是把程序计数器:是把程序计数器PC的内容加上指令中给的内容加上指令中给出的形式地址出的形式地址D,进而形成操作数的有效地址。,进而形成操作数的有效地址。 即:即: E =(PC)D。 由于由于PC的内容是当前指令的地址,所以,的内容是当前指令的地址,所以,“相对相对”寻址,就是指相对于当前的指令地址而言。寻址,就是指相对于当前的指令地址而言。采用相对寻址方式的好处是

50、程序员无须用指令的采用相对寻址方式的好处是程序员无须用指令的绝对地址编程,所编程序可以放在内存任何地方。绝对地址编程,所编程序可以放在内存任何地方。 此此时形式地址时形式地址D通常称为偏移量,其值可正可负,相对通常称为偏移量,其值可正可负,相对于当前指令地址进行浮动。于当前指令地址进行浮动。 (演示)(演示)指令系统指令系统7.基址寻址方式基址寻址方式 特点特点:这种寻址方式是将:这种寻址方式是将CPU中基址寄存中基址寄存器器RB的内容加上指令中给定的形式地址的内容加上指令中给定的形式地址D,而,而形成操作数的有效地址。形成操作数的有效地址。 即:即: E=(RB) D 这种寻址方式的优点是可

51、以这种寻址方式的优点是可以扩大寻址能力扩大寻址能力。同形式地址同形式地址D相比,基址寄存器的位数可以设相比,基址寄存器的位数可以设置得较长,从而可以在较大的存储空间中寻址。置得较长,从而可以在较大的存储空间中寻址。 (演示)(演示)指令系统指令系统8.变址寻址方式变址寻址方式 特点特点:这种寻址方式是把:这种寻址方式是把CPU中某个变中某个变址寄存器址寄存器RX的内容与偏移量的内容与偏移量D相加,形成操作相加,形成操作数有效地址数有效地址E。 即:即:E=(RX) D (可见,变址寻址方式与基址寻址方式计算有效地址的方法很(可见,变址寻址方式与基址寻址方式计算有效地址的方法很相似)相似) 注意

52、注意: 使用变址寻址方式的目的不是为了使用变址寻址方式的目的不是为了扩大寻址空间,而是为了便于实现程序块的规扩大寻址空间,而是为了便于实现程序块的规律性移动或变化。律性移动或变化。指令系统指令系统9.块寻址方式块寻址方式 块寻址方式经常用在输入输出(块寻址方式经常用在输入输出(I/OI/O)指令中,以实现外)指令中,以实现外存存或外围设备与内存之间的数据块传送。块寻址方式在内存中还或外围设备与内存之间的数据块传送。块寻址方式在内存中还可用于数据块搬家。可用于数据块搬家。 块寻址时,通常在指令中指出数据块的起始地址(首地块寻址时,通常在指令中指出数据块的起始地址(首地址)和数据块的长度(字数或字

53、节数)。址)和数据块的长度(字数或字节数)。如果数据块是变长的,可用三种方法指出它的长度:如果数据块是变长的,可用三种方法指出它的长度:(1)(1)指令中划出字段指出长度;指令中划出字段指出长度;(2)(2)指令格式中指出数据块的首地址与末地址;指令格式中指出数据块的首地址与末地址;(3)(3)由块结束字符指出数据块长度。由块结束字符指出数据块长度。 块地址的指令格式如下:块地址的指令格式如下: 指令系统指令系统操作码操作码首地址首地址标志位标志位末地址末地址10.段寻址方式段寻址方式 很多微型机中采用了段寻址方式,用于扩大寻址空间。很多微型机中采用了段寻址方式,用于扩大寻址空间。 例如:例如

54、: 如何在如何在1616位机中形成位机中形成2020位的地址位的地址,从而获得从而获得1M1M存储存储空间的直接寻址能力?空间的直接寻址能力? 实现方法实现方法 : 将整个将整个1M1M空间存储器以空间存储器以64K64K为单位划分成若干段。在寻址为单位划分成若干段。在寻址一个具体的内存单元时,由一个基地址(段号)再加上某些寄一个具体的内存单元时,由一个基地址(段号)再加上某些寄存器提供的存器提供的1616位偏移量来形成实际的位偏移量来形成实际的2020位物理地址。这个基地位物理地址。这个基地址就是址就是CPUCPU中的中的段寄存器段寄存器。 在形成在形成2020位物理地址时,段寄存器中的位物

55、理地址时,段寄存器中的1616位数会自动左移位数会自动左移4 4位,然后以位,然后以1616位偏移量相加,即可形成所需的位偏移量相加,即可形成所需的2020位的内存地位的内存地址。可见,这种寻址方式的实质还是基址寻址。址。可见,这种寻址方式的实质还是基址寻址。 (演示)(演示) 指令系统指令系统4.3.3寻址方式举例寻址方式举例 1.PDP/11 1.PDP/11系列机寻址方式系列机寻址方式 PDP/11PDP/11系列机指令字长为系列机指令字长为1616位。虽然指令位。虽然指令系统中有单操作数指令和双操作数指令,但操系统中有单操作数指令和双操作数指令,但操作数字段作数字段( (即地址部分即地

56、址部分) )均由均由6 6位二进制构成。例位二进制构成。例如双操作数指令如下如双操作数指令如下: :指令系统指令系统151211109876543210操作码操作码寻址方式寻址方式寄存器号寄存器号寻址方式寻址方式寄存器号寄存器号源地址源地址目标地址目标地址PDP/11计算机计算机CPU中有中有8个程序可访问的个程序可访问的寄存器,其编号为寄存器,其编号为R0-R7。R7作为程序计数器作为程序计数器0(PC)使用,使用,R6作为堆栈指示器(作为堆栈指示器(SP)使用,)使用,而其它而其它6个寄存器个寄存器R0-R5可作为通用寄存器。因可作为通用寄存器。因此用指令中的此用指令中的3位对应位对应寄存

57、器号寄存器号即可。即可。指令中有指令中有3位用于寻址方式选择,可指示位用于寻址方式选择,可指示8种寻址方式。此外还有种寻址方式。此外还有4中指令计数器型寻址中指令计数器型寻址方式属于隐含寻址方式,它们以访问方式属于隐含寻址方式,它们以访问R7(程序(程序计数器)为标志。计数器)为标志。 各种操作数寻址方式及寻址特征位的编号各种操作数寻址方式及寻址特征位的编号, ,见表见表4.44.4:指令系统指令系统寻址名称寻址名称寻址寻址特征值特征值有效地址有效地址E汇编汇编格式格式说明说明直直接接型型寄存器型寄存器型000E=RRn寄存器寄存器Rn的内容是操作数,的内容是操作数,相当于直接地址相当于直接地

58、址自增型自增型010E=(R);(R)+2R(Rn)+寄存器寄存器Rn的内容是操作数的内容是操作数地址,然后递增寄存器内容地址,然后递增寄存器内容自减型自减型100(R)-2R;E=(R)-(Rn)先递减寄存器先递减寄存器Rn的内容,的内容,然后作为操作数的地址然后作为操作数的地址变址型变址型110(PC)+2PC;E=(PC)+(R)X(Rn)寄存器寄存器Rn的内容与本指令的内容与本指令下一单元所存的数相加,作下一单元所存的数相加,作为操作数的地址为操作数的地址 各种操作数寻址方式及寻址特征位的编号各种操作数寻址方式及寻址特征位的编号, ,见表见表4.44.4:指令系统指令系统寻址名称寻址名

59、称寻址寻址特征值特征值有效地址有效地址E汇编格汇编格式式说明说明间间接接型型寄存器寄存器间接间接001E=(R)Rn或或(Rn)寄存器寄存器Rn的内容作为操的内容作为操作数地址,相当于寄存作数地址,相当于寄存器间接地址器间接地址自增间接自增间接011E=(R);(R)+2R(Rn)+寄存器寄存器Rn的内容作为操的内容作为操作数地址的地址,然后作数地址的地址,然后寄存器寄存器Rn的内容递减的内容递减自减间接自减间接101(R)-2R;E=(R)-(Rn)寄存器寄存器Rn的内容先递减,的内容先递减,然后作为操作数地址的然后作为操作数地址的地址地址变址间接变址间接111(PC)+2PC;E=(R)+

60、(PC)X(Rn)指令下一个单元的内容指令下一个单元的内容与变址寄存器与变址寄存器Rn所指示所指示的单元内容相加是操作的单元内容相加是操作数的地址数的地址 各种操作数寻址方式及寻址特征位的编号各种操作数寻址方式及寻址特征位的编号, ,见表见表4.44.4:指令系统指令系统寻址寻址名称名称寻址寻址特征值特征值有效地址有效地址E汇编汇编格式格式说明说明程程序序计计数数器器型型立即型立即型010(PC)+2PC;E=(PC)#n指令下一个单元内容是指令下一个单元内容是操作数的地址操作数的地址绝对值绝对值011(PC)+2PC;E=(PC)#A指令下一个单元内容是指令下一个单元内容是操作数的地址操作数

温馨提示

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

评论

0/150

提交评论