版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第七章 指令系统2009年2月6日7.1 7.1 指令概述指令概述 用计算机解题时,一般都要编制程序用计算机解题时,一般都要编制程序,程序既可用高级语言程序既可用高级语言编编写,亦可用机器语言写,亦可用机器语言编编写写; 但计算机但计算机只只能够识别和执行用能够识别和执行用机器语言机器语言编写的程序;编写的程序; 各种高级语言编写的应用程序,最终都要翻译成机器语言各种高级语言编写的应用程序,最终都要翻译成机器语言来执行来执行。 机器语言是由一系列的指令(语句)组成的机器语言是由一系列的指令(语句)组成的; 指令的格式就是机器语言的语法指令的格式就是机器语言的语法; 每条指令每条指令规定机器完成
2、一定的功能规定机器完成一定的功能。 一台计算机的所有的一台计算机的所有的指令集合称为该机的指令系统指令集合称为该机的指令系统或指令或指令集集。它是程序工作者编制程序的基本依据,也是进行计算机它是程序工作者编制程序的基本依据,也是进行计算机逻辑设计的基本依据逻辑设计的基本依据 。7.2 指令系统的发展与性能要求7.2.1指令系统的发展 计算机的程序是由一系列机器指令组成的。从计算机组成的层次结构来说,计算机的指令有微指令、机器指令和宏指令之分: 微指令-微程序级的命令,解释执行机器指令。属于硬件 宏指令-由若干条机器指令组成的软件指令,完成某一特定功能。属于软件 机器指令-介于微指令与宏指令之间
3、,通常简称为指令,完成某一特定操作。本章所讨论的指令,是机器指令。1. 1. 指令系统指令系统指令系统是表征一台计算机性能的重要因素,它的格式与功能不仅直接影响到机器的硬件结构,而且也直接影响到系统软件,影响到机器的适用范围。 2 2指令系统的发展指令系统的发展 (1 1)系列计算机)系列计算机系列计算机是指基本指令系统相同、基本体系结构相同的一个系列的各种型号的计算机。其必要条件是同一系列的各机种有共同的指令集而且新推出机种的指令系统一定应包含所有旧机种的全部指令,即实现向上兼容。这样,旧机种上运行的各种软件可以不加任何修改便可在新机种上运行,大大减少了软件开发费用。系列机解决了各机种的软件
4、兼容问题。 (2 2)指令系统结构)指令系统结构从计算机指令系统的角度看当前的计算机指令系统结构分为两大类: 复杂指令集计算机(CISC) 精简指令集计算机(RISC) 7070年代末期年代末期: : 大多数计算机的指令系统多达几百大多数计算机的指令系统多达几百条。我们称这些计算机为条。我们称这些计算机为复杂指令系统复杂指令系统计算机计算机(CISC)(CISC)。 但是如此庞大的指令系统难以保证但是如此庞大的指令系统难以保证正确性,不易调试正确性,不易调试维护,造成硬件资源浪费。为此人们又维护,造成硬件资源浪费。为此人们又提出了易于采用提出了易于采用VLSIVLSI技术实现的技术实现的精简指
5、令系统计算机精简指令系统计算机(RISCRISC)。)。3 3指令系统的性能要求指令系统的性能要求 一个完善的指令系统应满足如下四方面的要求:一个完善的指令系统应满足如下四方面的要求: (1 1) 完备性完备性。完备性是指用汇编语言编写各种程序时,指令系统直接提供。完备性是指用汇编语言编写各种程序时,指令系统直接提供的指令足够使用,而不必用软件来实现。完备性要求指令系统丰富、功能齐全、的指令足够使用,而不必用软件来实现。完备性要求指令系统丰富、功能齐全、使用方便。使用方便。 (2 2) 有效性有效性。有效性是指利用该指令系统所编写的程序能够高效率地运行。有效性是指利用该指令系统所编写的程序能够
6、高效率地运行。高效率主要表现在程序占据存储空间小、执行速度快。高效率主要表现在程序占据存储空间小、执行速度快。 (3 3) 规整性规整性。规整性包括指令系统的对称性、匀齐性、指令格式和数据格。规整性包括指令系统的对称性、匀齐性、指令格式和数据格式的一致性。式的一致性。 对称性:在指令系统中所有的寄存器和存储器单元都可同等对待,所有的对称性:在指令系统中所有的寄存器和存储器单元都可同等对待,所有的指令都可使用各种寻址方式;指令都可使用各种寻址方式; 匀齐性:一种操作性质的指令可以支持各种数据类型;匀齐性:一种操作性质的指令可以支持各种数据类型; 格式一致性:指令长度和数据长度有一定的关系,以方便
7、处理和存取。格式一致性:指令长度和数据长度有一定的关系,以方便处理和存取。 (4 4) 兼容性兼容性:至少要能做到:至少要能做到 向上兼容向上兼容 ,即低档机上运行的软件可以在高,即低档机上运行的软件可以在高档机上运行。档机上运行。4 4低级语言与硬件结构的关系低级语言与硬件结构的关系 计算机语言有高级语言和低级语言之分。高级语言语句和用法与具体机器的计算机语言有高级语言和低级语言之分。高级语言语句和用法与具体机器的指令系统无关。低级语言分机器语言(二进制语言)和汇编语言(符号语言),指令系统无关。低级语言分机器语言(二进制语言)和汇编语言(符号语言),这两种语言都是面向机器的语言,它们和具体
8、机器的指令系统密切相关。这两种语言都是面向机器的语言,它们和具体机器的指令系统密切相关。 7.3 7.3 指令格式指令格式 指令由指令由操作码操作码和和地址码地址码两部分组成,它的基本格式如下两部分组成,它的基本格式如下: 操操 作作 码码 地地 址址 码码 操作码是说明指令操作性质的二进制数代码。操作码是说明指令操作性质的二进制数代码。 操作码所占的二进制位数决定了一台计算机所能允许的指令操作码所占的二进制位数决定了一台计算机所能允许的指令 条数条数。 例如,操作码占用六位二进制码时,这台计算机最多允许有例如,操作码占用六位二进制码时,这台计算机最多允许有: 2 26 664 64 条指令条
9、指令1 1. .操作码操作码 固定长度操作码是指操作码所占的二进制位数固定不变,而固定长度操作码是指操作码所占的二进制位数固定不变,而且集中放在指令字的一个字段中。且集中放在指令字的一个字段中。 这种格式有利于简化硬件设计,减少指令译码时间,广泛这种格式有利于简化硬件设计,减少指令译码时间,广泛用于字长较长的大、中型计算机和超级小型计算机中。用于字长较长的大、中型计算机和超级小型计算机中。 例如例如IBM370IBM370和和VAXVAX1111系列机中系列机中, , 操作码的长度都是操作码的长度都是8 8位,位,可表示可表示256256条指令条指令。 (2)(2)可变长度操作码可变长度操作码
10、 可变长度操作码是操作码扩展技术的应用,即操作码的可变长度操作码是操作码扩展技术的应用,即操作码的长度是可变的,且分散地放在指长度是可变的,且分散地放在指令的不同字段中。这种格式有令的不同字段中。这种格式有利于压缩程序中操作码的平均长度利于压缩程序中操作码的平均长度,在字长较短的在字长较短的微型机微型机中被中被广泛应用广泛应用。如。如:PDPPDP1111,INTEL 8086/80386INTEL 8086/80386等,其操作码的等,其操作码的长度均是可变的。长度均是可变的。(1)(1)固定长度操作码固定长度操作码操作码字段分两种:操作码字段分两种: 2. 2. 地址码地址码 根据一条指令
11、中有几个操作数地址,可将该指令称为根据一条指令中有几个操作数地址,可将该指令称为几操作数指令或几地址指令。几操作数指令或几地址指令。一般的操作数有被操作数、操作数及操作结果这一般的操作数有被操作数、操作数及操作结果这三种数,因而就形成了三地址指令格式。在此基三种数,因而就形成了三地址指令格式。在此基础上,后来又发展成二地址格式、一地址格式和零地础上,后来又发展成二地址格式、一地址格式和零地址格式,如下图所示:址格式,如下图所示:操作码操作码A1A2A3操作码操作码A1A2操作码操作码A操作码操作码三地址指令三地址指令 二地址指令二地址指令 单地址指令单地址指令 零地址指令零地址指令 三地址指令
12、字中有三个操作数地址。三地址指令字中有三个操作数地址。(A1)OP(A2)A3A1为被操作数地址,也称源操作数地址;为被操作数地址,也称源操作数地址;A2为操作数为操作数地址,也称终点(目的)操作数地址;地址,也称终点(目的)操作数地址;A3为存放结果的地址。为存放结果的地址。同样,同样,A1,A2,A3既可以是内存中的单元地址,也可以是运算既可以是内存中的单元地址,也可以是运算器中通用寄存器的地址。器中通用寄存器的地址。单地址指令又称为单操作数指令。通常这种指令通常单地址指令又称为单操作数指令。通常这种指令通常以运算器中累加寄存器以运算器中累加寄存器ACAC中的数据为被操作数,指令字的中的数
13、据为被操作数,指令字的地址码字段所指明的数为操作数,操作结果又放回累加寄地址码字段所指明的数为操作数,操作结果又放回累加寄存器存器ACAC中。中。(AC)OP(A)ACOPOP表示操作性质;(表示操作性质;(ACAC)表示累加寄存器表示累加寄存器ACAC中的数;中的数;(A A)表示内存中地址为表示内存中地址为A A的存储单元中的数或运算器中地的存储单元中的数或运算器中地址为址为A A的通用寄存器中的数;的通用寄存器中的数; 表示把操作(运算)结果表示把操作(运算)结果传送到指定的地方。传送到指定的地方。二地址指令常称为双操作数指令,它的两个地址码二地址指令常称为双操作数指令,它的两个地址码字
14、段分别指明参与操作的两个数在内存中或运算字段分别指明参与操作的两个数在内存中或运算器中通用寄存器的地址,器中通用寄存器的地址,A1A1作存放操作结果的地址。作存放操作结果的地址。(A1)OP(A2)A1零地址指令的指令字中只有操作码,而没有地零地址指令的指令字中只有操作码,而没有地址码。址码。 二地址指令。二地址指令。 二地址指令常称双操作数指令,指令中给出二地址指令常称双操作数指令,指令中给出两个地址码字段两个地址码字段A1A1和和A2A2,分别指明参与操作的两个数在内存中分别指明参与操作的两个数在内存中或运算器通用寄存器的地址,其中地址或运算器通用寄存器的地址,其中地址A1A1兼作存放操作
15、结果的兼作存放操作结果的地址。地址。 (A1) OP (A2) A1 (A1) OP (A2) A1 如:如:ADD R1, R2ADD R1, R2 三地址指令三地址指令 三地址指令字中有二个源操作数地址三地址指令字中有二个源操作数地址A1A1,A2A2和一个目的操和一个目的操作数地址作数地址A3A3。(A1) OP (A2) A3 (A1) OP (A2) A3 如:如:ADD R1, R2, R3ADD R1, R2, R3 在二地址指令格式中,从操作数的物理位置来说,又可归在二地址指令格式中,从操作数的物理位置来说,又可归结为三种类型:结为三种类型: (SSSS)型指令型指令-存储器存
16、储器型指令,为访问存储器的存储器存储器型指令,为访问存储器的指令格式;指令格式; (RRRR)型指令型指令-寄存器寄存器型指令,为访问寄存器的寄存器寄存器型指令,为访问寄存器的指令格式;指令格式; (RSRS)型指令型指令-寄存器存储器型指令,用于存储器与寄寄存器存储器型指令,用于存储器与寄存器交换信息。存器交换信息。 3. 3. 扩展操作码技术扩展操作码技术操作码的位数随地址数的减少而增加操作码的位数随地址数的减少而增加OP A1 A2 A3000000011110A1A1A1A2A2A2A3A3A3A2A2A2A3A3A31111111111110000000111101111111111
17、11111111111111111111111111000000011111111111111111111111111111A3A3A30000000111104 4 位操作码位操作码8 8 位操作码位操作码12 12 位操作码位操作码16 16 位操作码位操作码1515条三地址指令条三地址指令1515条二地址指令条二地址指令1515条一地址指令条一地址指令1616条零地址指令条零地址指令7.2.2 指令长度指令长度 指令字长度指令字长度:一个指令字中包含二进制代码的位:一个指令字中包含二进制代码的位数。数。机器字长机器字长:计算机能直接处理的二进制数据的位:计算机能直接处理的二进制数据的位数
18、,它决定了计算机的运算精度。数,它决定了计算机的运算精度。 单字长指令单字长指令:指令长度等于机器字长度;:指令长度等于机器字长度; 半字长指令半字长指令:指令长度等于半个机器字长度的指:指令长度等于半个机器字长度的指令;令; 双字长指令双字长指令:指令长度等于两个机器字长度的指:指令长度等于两个机器字长度的指令。令。例如,例如,IBM370IBM370系列,它的指令格式有系列,它的指令格式有1616位(半字)位(半字)的,有的,有3232位(单字)的,还有位(单字)的,还有4848位(一个半字)的。位(一个半字)的。在在PentiumPentium系列机中,指令格式也是可变的:有系列机中,指
19、令格式也是可变的:有8 8位、位、1616位、位、3232位、位、6464位不等。位不等。 使用多字长指令,使用多字长指令,目的目的在于提供足够的地址位来在于提供足够的地址位来解决访问内存任何单元的寻址问题。其主要解决访问内存任何单元的寻址问题。其主要缺点缺点是必是必须两次或多次访问内存以取出一整条指令,降低了须两次或多次访问内存以取出一整条指令,降低了CPUCPU的运算速度,又占用了更多的存储空间。的运算速度,又占用了更多的存储空间。( (当然,当然, 若采用指令流水线、多体交叉存储等技术,可以较好若采用指令流水线、多体交叉存储等技术,可以较好地解决此问题)地解决此问题) 等长指令字结构等长
20、指令字结构: : 各种指令字长各种指令字长度是相等的。这种指令字结构简单,度是相等的。这种指令字结构简单,且指令字长度是不变的。且指令字长度是不变的。 变长指令字结构变长指令字结构: : 指令字的长度指令字的长度随指令功能而变化。这种指令字结随指令功能而变化。这种指令字结构灵活,能充分利用指令长度,但构灵活,能充分利用指令长度,但指令的译码及控制较复杂。指令的译码及控制较复杂。 指令格式举例指令格式举例-Pentium-Pentium指令格式指令格式 PentiumPentium机的指令字长度也是可变的:机的指令字长度也是可变的:从字节从字节到到1212字节,还可以带前缀字节,还可以带前缀。指
21、令格式如下所示:。指令格式如下所示:0或或10或或10或或10或或1(字节数)(字节数)指令前缀指令前缀 段取代段取代操作数长度取代操作数长度取代地址长度取代地址长度取代1或或20或或10或或10,1,2,40,1,2,4操作码操作码 Mod Reg或或操作码操作码 R/M 比例比例S 变址变址I基址基址B位移量位移量立即数立即数2位位3位位3位位2位位3位位3位位(字节数字节数) 指令的前缀是可选项,其作用是对其后的指令指令的前缀是可选项,其作用是对其后的指令本身进行显示约定。每个前缀占个字节。本身进行显示约定。每个前缀占个字节。 这种非固定长度的指令格式是典型的这种非固定长度的指令格式是典
22、型的CICSCICS结构特征。一是结构特征。一是为了与它的前身为了与它的前身8048680486保持兼容,二是希望能给编译程序的编制保持兼容,二是希望能给编译程序的编制以更多灵活的编程支持。以更多灵活的编程支持。 指令前缀指令前缀包括包括LOCKLOCK(锁定)前缀和重复前缀。锁定)前缀和重复前缀。LOCKLOCK前缀前缀用于多用于多CPUCPU环境中对共享存储器的排他性访问。环境中对共享存储器的排他性访问。重重复前缀复前缀用于字符串的重复操作,以获得比软件循环方法更用于字符串的重复操作,以获得比软件循环方法更快的速度。快的速度。段取代前缀段取代前缀根据指令的定义和程序的上下文,一条指令所使用
23、的段寄存器根据指令的定义和程序的上下文,一条指令所使用的段寄存器名称可以不出现在指令格式名称可以不出现在指令格式中,这称为段缺省规则。当要求一条指令不按缺省规则使用某个段寄存器时,中,这称为段缺省规则。当要求一条指令不按缺省规则使用某个段寄存器时,必须以段取代前缀明确指明必须以段取代前缀明确指明此段寄存器。此段寄存器。 操作数长度取代前缀和地址长度取代前缀操作数长度取代前缀和地址长度取代前缀在实地在实地址模式下,操作数和地址的默认长度是址模式下,操作数和地址的默认长度是1616位;在保护位;在保护模式下,若模式下,若D D1 1,操作数和地址的默认长度是操作数和地址的默认长度是3232位,若位
24、,若D D0 0,二者的默认长度是二者的默认长度是1616位。位。指令本身由操作码字段、指令本身由操作码字段、Mod-R/M字段、字段、SIB字段、位移量字段、立即数字段组成。除操字段、位移量字段、立即数字段组成。除操作码字段外,其他四个字段都是可选字段。作码字段外,其他四个字段都是可选字段。 Mod-R/MMod-R/M字段:字段:规定了存储器操作数的寻址方规定了存储器操作数的寻址方式,给出了寄存器操作数的寄存器地址号。式,给出了寄存器操作数的寄存器地址号。 SIBSIB字段字段:和和Mod-R/MMod-R/M字段一起,对操作字段一起,对操作数来源进行完整的说明。数来源进行完整的说明。 7
25、.3 指令和数据的寻址方式 寻址方式-当采用地址指定方式时,形成操作数的地址或指令地址的方式,称为寻址方式。 寻址方式分为两类,即指令寻址方式和数据寻址方式。 7.3.1 指令寻址方式 .顺序寻址方式-指令逐条顺序执行,由PC+1PC控制; 跳跃寻址方式-程序执行转移指令,下条指令的地址不再是由PC给出,而是由本条指令给出。 寻址方式寻址方式 确定确定 本条指令本条指令 的的 操作数地址操作数地址下一条下一条 欲执行欲执行 指令指令 的的 指令地址指令地址指令寻址指令寻址数据寻址数据寻址寻址方式寻址方式1.1.顺序寻址方式顺序寻址方式 指令地址在内存中按顺序安排,当执行一段程序指令地址在内存中
26、按顺序安排,当执行一段程序时,通常是一条指令接一条指令的顺序执行。从存储时,通常是一条指令接一条指令的顺序执行。从存储器取出第一条指令,然后执行这条指令;接着从存储器取出第一条指令,然后执行这条指令;接着从存储器取出第二条指令,在执行第二条指令;接着再取出器取出第二条指令,在执行第二条指令;接着再取出第三条指令第三条指令。这种程序顺序执行的过程,我们称。这种程序顺序执行的过程,我们称为指令的为指令的顺序寻址方式顺序寻址方式。为此,必须使用程序计数器(又称指令指针寄存为此,必须使用程序计数器(又称指令指针寄存器)器)PCPC来计数指令的顺序号,该顺序号就是指令在内来计数指令的顺序号,该顺序号就是
27、指令在内存中的地址。存中的地址。由由PCPC指出程序在内指出程序在内存中的地址。存中的地址。2.2.跳跃寻址方式跳跃寻址方式 当程序转移执行的顺序时,指令的寻址就采取当程序转移执行的顺序时,指令的寻址就采取跳跳跃寻址方式跃寻址方式。所谓。所谓跳跃跳跃: : 是指下条指令的地址码不是是指下条指令的地址码不是顺序地由程序计数器顺序地由程序计数器PCPC给出,而是由本条指令给出。给出,而是由本条指令给出。 由于程序跳转后,将按新的指令地址开始顺序执由于程序跳转后,将按新的指令地址开始顺序执行。所以,程序计数器行。所以,程序计数器PCPC的内容也必须相应改变,以的内容也必须相应改变,以便及时跟踪新的指
28、令地址。便及时跟踪新的指令地址。 采用指令的采用指令的跳跃寻址方式跳跃寻址方式,可以实现程序转移或,可以实现程序转移或构成循环程序,从而能缩短程序长度,或将某些程序构成循环程序,从而能缩短程序长度,或将某些程序作为公共程序引用。作为公共程序引用。 指令系统中的各种条件转移或无条件转移指令,指令系统中的各种条件转移或无条件转移指令,就是为了实现指令的跳跃寻址而设置的。就是为了实现指令的跳跃寻址而设置的。 7.3.2 7.3.2 操作数类型和操作种类操作数类型和操作种类1 1、操作数类型、操作数类型地址地址数字数字字符字符逻辑数逻辑数无符号整数无符号整数定点数、浮点数、十进制数定点数、浮点数、十进
29、制数ASCIIASCII逻辑运算逻辑运算2 2、数据在存储器中的存放方式、数据在存储器中的存放方式字地址字地址 为为 低字节低字节 地址地址字地址字地址 为为 高字节高字节 地址地址37621540字地址字地址04低字节低字节04512673字地址字地址04低字节低字节存储器中的数据存放(存储字长为存储器中的数据存放(存储字长为 3232 位)位)地址(十进制)地址(十进制) 0 4 812162024283236双字双字双字(地址双字(地址32)双字双字双字(地址双字(地址24)半字(地址半字(地址20)半字(地址半字(地址22)半字(地址半字(地址16)半字(地址半字(地址18)字节(地址
30、字节(地址8)字节(地址字节(地址9)字节(地址字节(地址10)字节(地址字节(地址11)字(地址字(地址 4)字(地址字(地址 0)字节(地址字节(地址14) 字节(地址字节(地址15)字节(地址字节(地址13) 字节(地址字节(地址12)边界对准边界对准地址(十进制)地址(十进制)048字节字节( 地址地址7)字节字节( 地址地址6)字字( 地址地址2)半字半字( 地址地址10)半字半字( 地址地址8)半字半字( 地址地址0)字字( 地址地址4)边界未对准边界未对准 7.3.3 7.3.3 数据寻址数据寻址 形式地址形式地址 指令字中的地址指令字中的地址 有效地址有效地址 操作数的真实地址
31、操作数的真实地址 约定约定 指令字长指令字长 = = 存储字长存储字长 = = 机器字长机器字长形式地址形式地址 A操作码操作码寻址特征寻址特征所谓操作数寻址方式,就是形成操作数有效地址的方法。 例如:某单地址指令的结构如下所示,其中用例如:某单地址指令的结构如下所示,其中用X,I,DX,I,D各字段组成该指令的各字段组成该指令的操作数地址操作数地址。 即:指令中操作数字段的地址码,是由形式地址即:指令中操作数字段的地址码,是由形式地址D D和寻址方式特征位和寻址方式特征位X X、I I等组合形成。等组合形成。 形式地址形式地址 D变址变址 X间址间址 I操作码操作码 OP操作码字段操作码字段
32、操操作作数数字字段段1. 1. 立即寻址立即寻址 指令执行阶段不访存指令执行阶段不访存 A A 的位数限制了立即数的范围的位数限制了立即数的范围OP # A立即寻址特征立即寻址特征立即数立即数 可正可负可正可负 补码补码形式地址形式地址 A A 就是操作数就是操作数2. 2. 隐含寻址隐含寻址。在指令中并不直接给出操作数的地址,而是隐含着操作数的地址。例:ADD B ;另一个操作数的地址即隐含为累加器AC3.3.直接寻址直接寻址 直接寻址特点直接寻址特点: 在指令格式的地址字段中在指令格式的地址字段中, ,直接给出操作数在内存的地址直接给出操作数在内存的地址D D。 采用直接寻址方式时,指令字
33、中的形式地采用直接寻址方式时,指令字中的形式地址址D D,就是操作数的有效地址就是操作数的有效地址E E,既:既:E ED D。因因此,通常把形式地址此,通常把形式地址D D又称为直接地址。又称为直接地址。 此时,由寻址模式给予指示。此时,由寻址模式给予指示。 如果用如果用S S表表示操作数,那么直接寻址的逻辑表达式为:示操作数,那么直接寻址的逻辑表达式为:S S(E E)()(D D) 4.4.间接寻址间接寻址 特点特点:指令地址字段中的形式地址:指令地址字段中的形式地址D D不是操作数的真正有不是操作数的真正有效地址效地址E E,而是存放操作数地址的内存单元地址。而是存放操作数地址的内存单
34、元地址。 即:即:D D单元的内容才是操作数的有效地址单元的内容才是操作数的有效地址。 如果把直接寻址和间接寻址结合起来,指令有如下形式:如果把直接寻址和间接寻址结合起来,指令有如下形式: 寻址特征位寻址特征位 I I0 0,表示直接寻址,这时有效地址:表示直接寻址,这时有效地址:E ED;D;I I1 1,表示间接寻址,这时有效地址:表示间接寻址,这时有效地址:E E(D D)。)。 间接寻址方式是早期计算机中经常采用的方式,但由于间接寻址方式是早期计算机中经常采用的方式,但由于两次访存,影响指令执行速度,现在已不大使两次访存,影响指令执行速度,现在已不大使用。用。 操作码操作码I ID D
35、(a) 一次间址一次间址 MOV Ri, (D)(b)二次间址二次间址 MOV Ri, (D)例如:例如:内内 存存MOV X2 Ri Ri10252200122000132 3100310010250操作码 特征 寄存器号 地址码DMOV操作码 特征 寄存器号 地址码D 内内 存存Ri03200X2 Ri 0132 013232001025MOV1025 5 5 寄存器寻址方式和寄存器间接寻址方式寄存器寻址方式和寄存器间接寻址方式 寄存器直接寻址寄存器直接寻址 如果指令的地址码部分给出的是如果指令的地址码部分给出的是某通用寄存器编号某通用寄存器编号R Ri i,R Ri i寄存器中存放着操作
36、数,则称为寄存器直接寻址。寄存器中存放着操作数,则称为寄存器直接寻址。例如:执行例如:执行ADD ADD R Ri i指令,指令, 该指令说明该指令说明R Ri i是操作数的有效地址,从是操作数的有效地址,从R Ri i中取出操作数中取出操作数与累加器的内容相加,其结果放在累加器中。与累加器的内容相加,其结果放在累加器中。 ADD RiRi 操作数操作数寻址特征寻址特征寄存器号寄存器号 寄存器间接寻址寄存器间接寻址 寄存器间接寻址,是指令中地址字段所指的寄存器中存放寄存器间接寻址,是指令中地址字段所指的寄存器中存放的是操作数的地址。的是操作数的地址。例如:执行例如:执行ADD ADD R Ri
37、 i 指令时指令时, ,说明说明R Ri i不是操作数的有效地址不是操作数的有效地址, ,而而 是存放操作有效地址的寄存器号。是存放操作有效地址的寄存器号。 ADD Ri 操作数地址操作数地址 Ri 内内 存存 操作数操作数 操作码 寻址特征 寄存器号6. 6. 相对寻址相对寻址把程序计数器PC的内容加上指令格式中的形式地址D而形成操作数的有效地址。 E=(PC) D 优点:相对于当前指令地址进行浮动。 例: INC PC+200H这是一条加1指令,指令有效地址E=E=(PCPC)+200H=2200H+200H=2200H PCPC的内容为的内容为10001000,指令的位移量(相对距离)为
38、,指令的位移量(相对距离)为3535。故其。故其相对地址为相对地址为10351035。这个地址是不固定的,随。这个地址是不固定的,随PCPC的值变化而变的值变化而变化,并且相对地差一个固定值。因此,无论程序装入存储器化,并且相对地差一个固定值。因此,无论程序装入存储器的任何区域,只要这个差值不变,程序均能正确运行。由于的任何区域,只要这个差值不变,程序均能正确运行。由于程序在内存空间里是浮动的,又称程序在内存空间里是浮动的,又称浮动寻址浮动寻址。例如:例如:OPX735操作码 寻址特征 位移量DP C:相对距离相对距离 =35内存内存OP X7353000103510007. 7. 基址寻址方
39、式基址寻址方式将CPU中基址寄存器Bx的内容加上指令格式中的形式地址而形成操作数的有效地址。E=(Bx) D 如:INC Bx+300H这是一条加1指令,指令有效地址E=E=(BxBx)+300H=0380H+300H=0380H 8. 8. 变址寻址方式变址寻址方式把CPU中某个变值寄存器Rx的内容与偏移量D相加来形成操作数的有效地址。 E=(Rx) D 如:INC Rx+300H这是一条加1指令,指令有效地址E=E=(RxRx)+300H=0380H+300H=0380H 变址寻址和基址寻址寻址方法十分类似,但用途不同: 变址寻址:主要便于数组访问 基址寻址:可扩大寻址范围,可实现程序浮动
40、。 例2:间址、变址寻址方式INC (Rx)+(100H)这是一条加1指令,指令有效地址:E=E=(RxRx)+ +(100H100H)=1060H=1060H 9.9.段寻址方式段寻址方式 很多微型机中采用了段寻址方式,用于扩大寻址空间。很多微型机中采用了段寻址方式,用于扩大寻址空间。例如:例如: 如何在如何在1616位机中形成位机中形成2020位的地址位的地址,从而获得从而获得1M1M存储存储空间的直接寻址能力?空间的直接寻址能力? 实现方法实现方法 :将整个将整个1M1M空间存储器以空间存储器以64K64K为单位划分成若干段。在寻址为单位划分成若干段。在寻址一个具体的内存单元时,由一个基
41、地址(段号)再加上某些寄一个具体的内存单元时,由一个基地址(段号)再加上某些寄存器提供的存器提供的1616位偏移量来形成实际的位偏移量来形成实际的2020位物理地址。这个基地位物理地址。这个基地址就是址就是CPUCPU中的中的段寄存器段寄存器。 在形成在形成2020位物理地址时,段寄存器中的位物理地址时,段寄存器中的1616位数会自动左移位数会自动左移4 4位,然后以位,然后以1616位偏移量相加,即可形成所需的位偏移量相加,即可形成所需的2020位的内存地位的内存地址。可见,这种寻址方式的实质还是基址寻址。址。可见,这种寻址方式的实质还是基址寻址。 寻址方式举例寻址方式举例 1.PDP/11
42、1.PDP/11系列机寻址方式系列机寻址方式 PDP/11PDP/11系列机指令字长为系列机指令字长为1616位。虽然指令位。虽然指令系统中有单操作数指令和双操作数指令,但操系统中有单操作数指令和双操作数指令,但操作数字段作数字段( (即地址部分即地址部分) )均由均由6 6位二进制构成。例位二进制构成。例如双操作数指令如下如双操作数指令如下: :15 1211 10 98 7 65 4 32 1 0操作码操作码寻址方式寻址方式寄存器号寄存器号寻址方式寻址方式寄存器号寄存器号源地址源地址目标地址目标地址PDP/11PDP/11计算机计算机CPUCPU中有中有8 8个程序可访问的寄个程序可访问的
43、寄存器,其编号为存器,其编号为R R0 0-R-R7 7。R R7 7作为程序计数器作为程序计数器0 0(PC)PC)使用,使用,R R6 6作为堆栈指示器(作为堆栈指示器(SPSP)使用,使用,而其它而其它6 6个寄存器个寄存器R R0 0-R-R5 5可作为通用寄存器。因可作为通用寄存器。因此用指令中的此用指令中的3 3位对应寄存器号即可。位对应寄存器号即可。指令中有指令中有3 3位用于寻址方式选择,可指示位用于寻址方式选择,可指示8 8种寻址方式。此外还有种寻址方式。此外还有4 4种指令计数器型寻址种指令计数器型寻址方式属于隐含寻址方式,它们以访问方式属于隐含寻址方式,它们以访问R R7
44、 7(程序程序计数器)为标志。计数器)为标志。 各种操作数寻址方式及寻址特征位的编号各种操作数寻址方式及寻址特征位的编号, ,见表:见表:寻址名寻址名称称 寻址寻址特征值特征值有效地址有效地址E E汇编汇编格式格式说明说明直直接接型型寄存器寄存器型型000000E=RE=RRnRn寄存器寄存器RnRn的内容是操作数,的内容是操作数,相当于直接地址相当于直接地址自增型自增型010010E=(R);E=(R);(R)+2(R)+2R R( (RnRn)+)+寄存器寄存器RnRn的内容是操作数的内容是操作数地址,然后递增寄存器内地址,然后递增寄存器内容容 自减型自减型100100(R)-2(R)-2
45、R;R;E=(R)E=(R)-(-(RnRn) ) 先递减寄存器先递减寄存器RnRn的内容,的内容,然后作为操作数的地址然后作为操作数的地址 变址型变址型110110(PC)+2(PC)+2PC;PC;E=(PC)+(R)E=(PC)+(R)X(RnX(Rn) )寄存器寄存器RnRn的内容与本指令的内容与本指令下一单元所存的数相加,下一单元所存的数相加,作为操作数的地址作为操作数的地址 各种操作数寻址方式及寻址特征位的编号各种操作数寻址方式及寻址特征位的编号, ,见表:见表:寻址名寻址名称称 寻址寻址特征值特征值有效地址有效地址E E汇编格汇编格式式说明说明间间接接型型寄存器寄存器 间接间接0
46、01001E=(R)E=(R) RnRn或或( (RnRn) )寄存器寄存器RnRn的内容作为操的内容作为操作数地址,相当于寄存作数地址,相当于寄存器间接地址器间接地址自增间自增间接接011011E=(R);E=(R);(R)+2(R)+2R R(RnRn)+)+寄存器寄存器RnRn的内容作为操的内容作为操作数地址的地址,然后作数地址的地址,然后寄存器寄存器RnRn的内容递减的内容递减自减间自减间接接101101(R)-2(R)-2R;R;E=(R)E=(R)-(-(RnRn) )寄存器寄存器RnRn的内容先递减,的内容先递减,然后作为操作数地址的然后作为操作数地址的地址地址变址间变址间接接1
47、11111(PC)+2(PC)+2PC;EPC;E=(R)+(PC)=(R)+(PC) X(RnX(Rn) )指令下一个单元的内容指令下一个单元的内容与变址寄存器与变址寄存器RnRn所指示所指示的单元内容相加是操作的单元内容相加是操作数的地址数的地址2.Pentium2.Pentium的寻址方式的寻址方式 PentiumPentium的外部地址总线宽度是的外部地址总线宽度是3636位位,但它也支持,但它也支持3232位物理地址空间。位物理地址空间。 在实地址模式下,逻辑地址形式为段寻址方式:在实地址模式下,逻辑地址形式为段寻址方式:将段名所指定的段寄存器内容(将段名所指定的段寄存器内容(161
48、6位)左移位)左移4 4位,低位,低4 4位补全位补全0,0,得到得到2020位段基地址,再加上位段基地址,再加上1616位段内偏移,位段内偏移,即得即得2020位物理地址。位物理地址。 在保护模式下,在保护模式下,3232位段基地址加上段内偏移得到位段基地址加上段内偏移得到3232位线性地址。由存储管理部件将其转换成位线性地址。由存储管理部件将其转换成3232位的物位的物理地址。理地址。 序号序号寻址方式名称寻址方式名称有效地址有效地址E E算法算法说明说明(1)(1)立即立即操作数在指令中操作数在指令中(2)(2)寄存器寄存器操作数在寄存器中,操作数在寄存器中,指令给出寄存器号指令给出寄存
49、器号(3)(3)直接直接E=E=DispDispDispDisp为偏移量为偏移量(4)(4)基址基址E=(RE=(RB B) )R RB B为基址寄存器为基址寄存器(5)(5)基址偏移量基址偏移量E=(E=(R RB B)+Disp)+Disp(6)(6)比例变址偏移量比例变址偏移量E=(E=(R RI I) )S+DispS+DispR RI I为变址寄存器为变址寄存器,S,S为为比例因子比例因子(7)(7)基址变址偏移基址变址偏移E=(E=(R RB B)+(R)+(RI I)+Disp)+Disp(8)(8)基址比例变址基址比例变址偏移量偏移量E=(RE=(RB B)+(R)+(RI I
50、) ) S+DispS+Disp(9)(9)相对相对E=(E=(PC)+DispPC)+DispPCPC为程序计数器或当为程序计数器或当前指令指针寄存器前指令指针寄存器7.5 典型指令7.5.1 指令的分类 一个较完善的指令系统应当包括: 数据传送类指令: 例)move、load、store等 算术运算类指令: 例)add、sub、mult、div、comp等. 移位操作类型 逻辑运算类指令: 例)and、or、xor、not等 程序控制类指令: 例)jump、branch、jsr、ret、int等 输入输出指令: 例)in、out等 字符串类指令: 例)如alpha中cmpbge、inswh
51、、extbl等 系统控制类指令: 例)push、pop、test等1.1.数据传送类指令数据传送类指令 这类指令的功能是实现寄存器与寄存器,寄存器与存这类指令的功能是实现寄存器与寄存器,寄存器与存储单元以及存储单元与存储单元之间的数据传送。储单元以及存储单元与存储单元之间的数据传送。 数据传送指令主要包括数据传送指令主要包括取数指令、存数指令、传送指令、取数指令、存数指令、传送指令、 成组传送指令、字节交换指令、清累加器指令、堆栈操作成组传送指令、字节交换指令、清累加器指令、堆栈操作 指令指令等等。等等。2.2.算术运算指令算术运算指令 这类指令包括这类指令包括二进制定点加、减、乘、除指令,浮
52、点加、二进制定点加、减、乘、除指令,浮点加、减、乘、除指令,求反、求补指令,算术移位指令,算术比较减、乘、除指令,求反、求补指令,算术移位指令,算术比较指令,十进制加、减运算指令指令,十进制加、减运算指令等。这类指令主要用于定点或浮等。这类指令主要用于定点或浮点的算术运算。大型机(如点的算术运算。大型机(如IBM 370IBM 370机、国产银河机、机、国产银河机、CRAY-1CRAY-1机、机、CDCCDC的的STARSTAR100100机等)中还设置有向量运算机等)中还设置有向量运算 指令,可直指令,可直接对整个向量或矩阵进行求和、求积运算。接对整个向量或矩阵进行求和、求积运算。3.3.逻
53、辑运算指令逻辑运算指令这类指令包括这类指令包括逻辑加、逻辑乘、逻辑比较、测等指令、按逻辑加、逻辑乘、逻辑比较、测等指令、按位加、逻辑移位位加、逻辑移位等指令,主要用于无符号数的位操作、代码的等指令,主要用于无符号数的位操作、代码的转换、判断及运算。移位指令用来对寄存器的内容实现左移、转换、判断及运算。移位指令用来对寄存器的内容实现左移、右移或循环移位。右移或循环移位。4.4.程序控制指令程序控制指令程序控制指令也称转移指令。执行程序时,有时机器执行程序控制指令也称转移指令。执行程序时,有时机器执行到某条指令时,出现了几种不同结果,这时机器必须执行一条到某条指令时,出现了几种不同结果,这时机器必
54、须执行一条转移指令,根据不同结果进行转移,从而改变程序原来执行的转移指令,根据不同结果进行转移,从而改变程序原来执行的顺序。这种转移指令称为条件转移指令。除各种顺序。这种转移指令称为条件转移指令。除各种条件转移指令条件转移指令外,还有无条件转移指令、转子程序指令、返回主程序指令、外,还有无条件转移指令、转子程序指令、返回主程序指令、中断返回指令中断返回指令等。等。 转移指令的转移地址一般采用直接寻址和转移指令的转移地址一般采用直接寻址和相对寻址方式来确定。相对寻址方式来确定。转子指令转子指令是转向本指令操作地址所指出的子程序入口,并将原是转向本指令操作地址所指出的子程序入口,并将原程序中下一条
55、指令地址存入内存某单元(或指定的某个寄存器)程序中下一条指令地址存入内存某单元(或指定的某个寄存器)中,以便为返回主程序时提供返回地址。中,以便为返回主程序时提供返回地址。5.5.输入输出指令输入输出指令 输入输出指令主要用来启动外围设备,检查测试外围设备输入输出指令主要用来启动外围设备,检查测试外围设备的工作状态,并实现的工作状态,并实现外部设备和外部设备和CPUCPU之间之间,或外围设备与外围设,或外围设备与外围设备之间的信息传送。备之间的信息传送。 6.6.字符串处理指令字符串处理指令字符串处理指令是一种字符串处理指令是一种非数值处理指令非数值处理指令,一般包括字符串,一般包括字符串传送
56、、字符串转换(把一种编码的字符串转换成另一种编码的传送、字符串转换(把一种编码的字符串转换成另一种编码的字符串)、字符串替换(把某一字符串用另一字符串替换)等。字符串)、字符串替换(把某一字符串用另一字符串替换)等。这类指令在文字编辑中对大量字符串进行处理。这类指令在文字编辑中对大量字符串进行处理。7.7.特权指令特权指令特权指令是指具有特殊权限的指令。这类指令只用于操作特权指令是指具有特殊权限的指令。这类指令只用于操作系统或其他系统软件,一般不直接提供给用户使用。系统或其他系统软件,一般不直接提供给用户使用。 在多用在多用户、多任务的计算机系统中特权指令必不可少。它主要用于系户、多任务的计算
57、机系统中特权指令必不可少。它主要用于系统资源的分配和管理。统资源的分配和管理。8.8.其他指令其他指令 除以上各类指令外,还有状态寄存器置位、复位指令、测除以上各类指令外,还有状态寄存器置位、复位指令、测试指令、暂停指令,空操作指令,以及其他一些系统控制用的试指令、暂停指令,空操作指令,以及其他一些系统控制用的特殊指令。特殊指令。例题例题1. 1. 某机指令格式如下某机指令格式如下: :其中其中X X为寻址特征位为寻址特征位, ,且且X=00X=00时不变址时不变址;X=01;X=01时用时用变址寄存器变址寄存器X X1 1进行变址进行变址;X=10;X=10时用变址寄存器时用变址寄存器X X
58、2 2进行变址进行变址;X=11;X=11时相对寻址。设时相对寻址。设(PC)=1234H,(X(PC)=1234H,(X1 1) ) =(X=(X2 2)=1122H,)=1122H,请确定下列指令的有效地址请确定下列指令的有效地址( (均用均用十六进制表示,十六进制表示,H H表示十六进制表示十六进制) );(1)4420H (2)2244H (3)1322H (4)3521H (5)6723H解解:(1):(1)指令指令4420H4420H展开为:展开为:0100010 00 0100000BX=00不变址不变址,有效地址有效地址=D=0020H(2)(2)指令指令2244H2244H展
59、开为展开为:001000 10 01000100BX=10X=10用变址寄存器用变址寄存器X X2 2进行变址,有效地址进行变址,有效地址=(X2)+D=1122H+44H=1166H(3)(3)指令指令1322H1322H展开为展开为:000100 11 00100010BX=11X=11为相对寻址为相对寻址, ,有效地址有效地址=(PC)+D=1234H+ 22H=1256H(4)(4)指令指令3521H3521H展开为展开为:001101 01 00100001BX=01X=01用变址寄存器用变址寄存器X X1 1进行变址,有效地址进行变址,有效地址=(X1)+D=0037H+21H=0
60、058H(5)(5)指令指令6723H6723H展开为展开为: :011001 11 00100011BX=11X=11为相对寻址为相对寻址, ,有效地址有效地址=(PC)+D=1234H+23H =1257H例题例题2: 2: 假设机器字长16位,主存容量为128K字节,指令字长度为16位或32位,共有128条指令,设计计算机指令格式,要求有直接、立即数、相对、基值、间接、变址六种寻址方式。解:由已知条件,机器字长16位,主存容量128KB/16=64K字,因此MAR=16位,共128条指令,故OP字段占7位。采用单字长和双字长两种指令格式,其中单字长指令用于算术逻辑和I/O类指令,双字长用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幼儿园烟控奖惩制度
- 广告施工奖惩制度
- 康复治疗奖惩制度
- 建筑工人奖惩制度
- 影视公司奖惩制度
- 德育处考核奖惩制度
- 房产营销部奖惩制度
- 技术团队奖惩制度
- 报修人员奖惩制度
- 招生方案奖惩制度
- 《竞选三好学生》课件
- 近三年内未发生重大事故的安全生产承诺范本
- 岳阳职业技术学院单招职业技能测试参考试题库(含答案)
- 量子密码学与后量子密码学
- 部编版四年级下册语文写字表生字加拼音组词
- 威斯特年产10000吨纳米铜盐系列产品、6000吨叔丁基过氧化氢精馏及3000吨糊状过氧化二苯甲酰项目环境影响报告
- 广西-黄邵华-向量的数量积
- 1.2 国内外网络空间安全发展战略
- 2023年湖南省长沙县初中学生学科核心素养竞赛物理试题(含答案)
- 东北大学最优化方法全部课件
- 人教新课标六年级数学下册全册大单元教学设计(表格式)
评论
0/150
提交评论