1、计算机组成原理计算机组成原理第第5章章 指令、指令系统和汇编语言程序设计指令、指令系统和汇编语言程序设计2 指令:指令:是计算机运行的最小的功能单元,是指挥是计算机运行的最小的功能单元,是指挥计算机硬件运行的命令,是由二进制位组成的位串,是计算机硬件运行的命令,是由二进制位组成的位串,是计算机硬件可以直接识别和执行的一个信息体。指令用计算机硬件可以直接识别和执行的一个信息体。指令用于程序设计人员告知计算机执行一个最基本运算、处理于程序设计人员告知计算机执行一个最基本运算、处理功能。功能。指令系统:指令系统:一台计算机提供的全部指令构成该计算一台计算机提供的全部指令构成该计算机的机的指令系统指令
2、系统。多条指令可以组成一个程序,完成一项。多条指令可以组成一个程序,完成一项预期的任务。预期的任务。5.1 指令系统概述指令系统概述 3汇编语言层汇编语言层操作系统层操作系统层指令系统层指令系统层微体系结构层微体系结构层数字逻辑层数字逻辑层高级语言层高级语言层应用层 计算机系统的层次结构计算机系统的层次结构 指令系统层指令系统层处在硬件系统和软件处在硬件系统和软件系统之间,是硬、软件之间的接口系统之间,是硬、软件之间的接口部分。部分。硬件系统硬件系统负责用于实现每条指令负责用于实现每条指令的功能,解决指令之间的连接关系;的功能,解决指令之间的连接关系;软件软件由按一定规则组织起来的许由按一定规
3、则组织起来的许多条指令组成,完成一定的数据运多条指令组成,完成一定的数据运算或者事务处理功能。算或者事务处理功能。指令系统优劣是一个计算机指令系统优劣是一个计算机系统是否成功的关键因素,同系统是否成功的关键因素,同时也是设计一台计算机的起点时也是设计一台计算机的起点和基本依据。和基本依据。微体系结构层微体系结构层软软 件件 系系 统统硬硬 件件 系系 统统回顾:指令系统在计算机中的地位回顾:指令系统在计算机中的地位4 设计指令系统的四点要求:设计指令系统的四点要求:完备性完备性:指令齐全指令齐全,编程方便。编程方便。规整性规整性:指令和数据的使用规则统一简单,易学易记指令和数据的使用规则统一简
4、单,易学易记高效性高效性:占内存少占内存少,运行省时。运行省时。兼容性兼容性:同一系列机软件兼容同一系列机软件兼容对设计指令系统的要求对设计指令系统的要求 对指令系统的要求很严格,既要支持程序设计人对指令系统的要求很严格,既要支持程序设计人员员用它设计各种程序用它设计各种程序,越简单、方便越好越简单、方便越好(相同算法实现相同算法实现所需的指令少所需的指令少),又要容易在计算机中,又要容易在计算机中用硬件实现这些用硬件实现这些指令的处理功能指令的处理功能,越节省、高效越好越节省、高效越好,但这两个方面,但这两个方面的要求经常是有矛盾的。的要求经常是有矛盾的。53 个层次的程序设计语言个层次的程
5、序设计语言 机器语言机器语言是计算机是计算机硬件能直接识别和运行的指令硬件能直接识别和运行的指令的集合的集合,是二进制码组成的指令,用机器语言设计程序是二进制码组成的指令,用机器语言设计程序基本不可行基本不可行。汇编语言汇编语言是对计算机机器语言进行符号化处理的结果是对计算机机器语言进行符号化处理的结果,再再增加一些为方便程序设计而实现的扩展功能。依赖编译器但效增加一些为方便程序设计而实现的扩展功能。依赖编译器但效率很高。率很高。高级语言高级语言又称算法语言,它的实现思路,不再是过分地又称算法语言,它的实现思路,不再是过分地“靠拢靠拢”计算机硬件的指令系统,而是着重面向解决实际问题计算机硬件的
6、指令系统,而是着重面向解决实际问题所用的算法,瞄准的是如何使程序设计人员能够方便地写出处所用的算法,瞄准的是如何使程序设计人员能够方便地写出处理问题和解题过程的程序,力争使程序设计工作的效率更高。理问题和解题过程的程序,力争使程序设计工作的效率更高。对编译器的效率要求很高。对编译器的效率要求很高。6确定指令系统的两种思路确定指令系统的两种思路 从降低硬件系统构成的复杂程度、提高指令执行的速度和并行性考虑,从降低硬件系统构成的复杂程度、提高指令执行的速度和并行性考虑,确定指令系统时有两种思路:确定指令系统时有两种思路:CISC(Complex Instruction Set Computer)(
7、)(intel x86)通常称为复杂指令系统的计算机。其核心思想是:为了提高效率通常称为复杂指令系统的计算机。其核心思想是:为了提高效率,让硬件做让硬件做更多的事情。更多的事情。其特点是:其特点是:指令条数多指令条数多,格式多样格式多样,寻址方式复杂寻址方式复杂,每条,每条指令的功能强指令的功能强,优点是汇编程序设计容易些,但计算机控制器的优点是汇编程序设计容易些,但计算机控制器的实现困难多(实现困难多(Intel 4G 处理器的处理器的流产流产/Power PC),很多指令被使用的机会比较少。,很多指令被使用的机会比较少。指令并行度差指令并行度差。RISC(Reduced Instructi
8、on Set Computer)(MIPS/POWER PC)通常称为精简指令系统的计算机。通常称为精简指令系统的计算机。约翰约翰.科克科克(John Cocke)(John Cocke)提出了著名的提出了著名的“20%-80%20%-80%定律定律”(即只有即只有20%20%简单的指令是经常使用的简单的指令是经常使用的,而其余而其余80%80%的复杂指令却的复杂指令却很少使用很少使用),),这是这是RISCRISC技术的设计基础。技术的设计基础。其核心思想是:让软件做更多的事情,提其核心思想是:让软件做更多的事情,提高简单指令的执行效率。(高简单指令的执行效率。(Alpha 处理器)处理器)
9、提供提供数目较少数目较少、格式与功能简单格式与功能简单、运行高效运行高效的指令,追求的是计算机控制的指令,追求的是计算机控制器实现简单,运行高速,更容易在单块超大规模集成电路的芯片内制做出来。器实现简单,运行高速,更容易在单块超大规模集成电路的芯片内制做出来。指指令并行性好(多发射技术)令并行性好(多发射技术)。融合趋势融合趋势:CISC和和RISC融合的趋势融合的趋势7CISC指令和指令和RISC指令举例指令举例CISC架构乘法指令:MUL ADDRA,ADDRB 可以将内存地址为ADDRA和ADDRB中的数相乘并将结果储存在ADDRA中。它完成的操作首先将ADDRA,ADDRB中的数据读入
10、寄存器,相乘和将结果写回内存的操作全部依赖于CPU中设计的逻辑来实现。这种架构会增加CPU结构的复杂性和对CPU工艺的要求,但对于编译器的开发十分有利。比如上面的例子,C程序中的a*=b就可以直接编译为一条乘法指令。RISC架构只支持简单寄存器乘法指令MUL A,B。RISC上实现相同的功能:MOV A,ADDRA;MOV B,ADDRB;MUL A,B;STR ADDRA,A。共需要4条指令。这种架构可以降低CPU的复杂性以及允许在同样的工艺水平下生产出功能更强大的CPU,但对于编译器的设计有更高的要求。8指令格式指令格式-指令表示指令表示指令字指令字:代表指令的一组二进制代码信息;:代表指
11、令的一组二进制代码信息;指令字长指令字长:指令字中二进制代码的位数。:指令字中二进制代码的位数。位数越多,所能表示的操作信息和地址信息也位数越多,所能表示的操作信息和地址信息也就越多,使指令功能丰富。但会占用存储空间多,就越多,使指令功能丰富。但会占用存储空间多,读取指令的时间可能增加。读取指令的时间可能增加。指令基本格式:一般由操作码和操作对象两部分组指令基本格式:一般由操作码和操作对象两部分组成成 操作对象指一个或多个地址码。操作对象指一个或多个地址码。OP A 0 A 1 9指令表示指令表示操作码:操作码:用来指明该指令所要完成的操作,如加法、用来指明该指令所要完成的操作,如加法、减法、
12、传送、移位、转移等等。减法、传送、移位、转移等等。位数反映了机器的操作种类,也即机器允许的指位数反映了机器的操作种类,也即机器允许的指令条数,如果操作码有令条数,如果操作码有n位二进制数位二进制数,则最多可表示则最多可表示2n种指令。种指令。地址码:地址码:用来寻找运算所需要的操作数(源操作数用来寻找运算所需要的操作数(源操作数和目的操作数)。和目的操作数)。地址码包括:源操作数地址、目的操作数地址和地址码包括:源操作数地址、目的操作数地址和下一条指令的地址。下一条指令的地址。地址含义:主存的地址、寄存器地址或者地址含义:主存的地址、寄存器地址或者I/O设备设备地址。地址。10指令字长与机器字
13、长的关系指令字长与机器字长的关系 机器字长机器字长是指计算机能直接处理的二进制数据的位是指计算机能直接处理的二进制数据的位数,它与计算机的功能和用途有很大的关系,是计算数,它与计算机的功能和用途有很大的关系,是计算机的一个重要技术指标。首先,字长决定了计算机的机的一个重要技术指标。首先,字长决定了计算机的运算精度,字长越长计算机的运算精度越高,因此高运算精度,字长越长计算机的运算精度越高,因此高性能的计算机字长较长。性能的计算机字长较长。指令的长度与机器的字长没有固定的关系,它既可以指令的长度与机器的字长没有固定的关系,它既可以小于或等于机器的字长小于或等于机器的字长,也可以大于机器的字长也可
14、以大于机器的字长(增加增加取指时间取指时间)。前者称为短格式指令,后者称为长格式。前者称为短格式指令,后者称为长格式指令。一条指令存放在地址连续的存储单元中。同一指令。一条指令存放在地址连续的存储单元中。同一台计算机中可能既有短格式指令又有长格式指令,但台计算机中可能既有短格式指令又有长格式指令,但通常是把最常用的指令(如算术逻辑运算指令、数据通常是把最常用的指令(如算术逻辑运算指令、数据传送指令)设计成短格式指令,以便节省存储空间和传送指令)设计成短格式指令,以便节省存储空间和提高指令的执行速度。提高指令的执行速度。11 指令的长度主要取决于操作码的长度、操作数地址的指令的长度主要取决于操作
15、码的长度、操作数地址的长度和操作数地址的个数。由于操作码的长度、操作数长度和操作数地址的个数。由于操作码的长度、操作数地址的长度及指令格式不同,各指令的长度不是固定的,地址的长度及指令格式不同,各指令的长度不是固定的,指令的长度通常为字节的整数倍。指令的长度通常为字节的整数倍。地址码长度决定了指令直接寻址能力,若为地址码长度决定了指令直接寻址能力,若为n位,则给位,则给出的出的n位直接地址寻址位直接地址寻址2n字节。这对于字长较短(字节。这对于字长较短(8位或位或16位)的微型机来说远远满足不了实际需要,扩大寻址位)的微型机来说远远满足不了实际需要,扩大寻址能力的方法,一是通过增加机器字长来增
16、加地址码的长能力的方法,一是通过增加机器字长来增加地址码的长度;二是采用地址扩展技术,把存储空间分成若干个段,度;二是采用地址扩展技术,把存储空间分成若干个段,用基地址加位移量的方法来增加地址码的长度。用基地址加位移量的方法来增加地址码的长度。在在Pentium系列机中,指令格式也是可变的:由系列机中,指令格式也是可变的:由8位、位、16位、位、32位、位、64位不等。位不等。125.1.1 操作码组织与编码操作码组织与编码定长的操作码的组织方案定长的操作码的组织方案 在指令字最高位部分分配固定若干位用于表示操作码。在指令字最高位部分分配固定若干位用于表示操作码。这种格式便于硬件设计,指令译码
17、时间短,广泛应用于字这种格式便于硬件设计,指令译码时间短,广泛应用于字长较长的、大中型计算机和超级小型计算机以及长较长的、大中型计算机和超级小型计算机以及RISC(Reduced Instruction Set Computer)中。如)中。如IBM370和和VAX-11系列机,操作码长度均为系列机,操作码长度均为8位。位。变长的操作码的组织方案变长的操作码的组织方案(扩展操作码扩展操作码)不同的指令操作码的位数可以变化,称可变长操作码。不同的指令操作码的位数可以变化,称可变长操作码。使用频度高的指令,采用较短的操作码,使用频度低的指使用频度高的指令,采用较短的操作码,使用频度低的指令,采用较
18、长的操作码,使得指令系统的操作码平均长度得到令,采用较长的操作码,使得指令系统的操作码平均长度得到压缩。压缩。由于这种格式可有效地压缩操作码的平均长度,在字长较由于这种格式可有效地压缩操作码的平均长度,在字长较短的微机中被广泛采用。如短的微机中被广泛采用。如PDP-11,Intel8086/80386等。等。13 假设某机器的指令长度为假设某机器的指令长度为16位,包括位,包括 4位基本操位基本操作码和三个作码和三个 4位地址码段。位地址码段。15 12 118 7 4 30 OP A1 A2 A3 4 位基本操作码可表示位基本操作码可表示 16个状态,个状态,如用如用 4 位操作码,则能表示
19、位操作码,则能表示 16 条条三地址三地址指令,指令,若用若用 8 位操作码,则可表示位操作码,则可表示 256 条条二地址二地址指令,指令,而用而用12位操作码,则可表示位操作码,则可表示 4096条条一地址一地址指令,指令,若若16位全用作操作码,则可表示位全用作操作码,则可表示 65536条条零地址零地址指令指令指令操作码的扩展技术指令操作码的扩展技术14操作码扩展:指令字长操作码扩展:指令字长1616位,可含有位,可含有3 3、2 2、1 1或或0 0个地址,每个地址占个地址,每个地址占4 4位。位。操作码操作码 地址码地址码 15 12 11 8 7 4 3 00000 0000 X
20、 X Y Y Z Z 1110 1110 X X Y Y Z Z.11111111 0000 0000 Y ZY Z 1111 1111 1110 1110 Y ZY Z.三地址指令三地址指令 1515条条二地址指令二地址指令 1515条条11111111 11111111 0000 0000 Z Z 1111 11111111 1111 1110 1110 Z Z.一地址指令一地址指令 1515条条11111111 11111111 11111111 0000 0000 1111 11111111 1111 11111111 1111 1111.零地址指令零地址指令 1616条条15 前面介
21、绍的操作码扩展方案中,每次扩展前面介绍的操作码扩展方案中,每次扩展4位并位并仅保留了仅保留了一个编码一个编码用于接下来的扩展过程,当每次扩用于接下来的扩展过程,当每次扩展的位数和保留的位数变化时,后面可扩展的指令条展的位数和保留的位数变化时,后面可扩展的指令条数就可以变化。例如在数就可以变化。例如在16位字中的指令字中,可以选位字中的指令字中,可以选用如下方案支持三地址指令、二地址指令、一地址指用如下方案支持三地址指令、二地址指令、一地址指令和零地址指令令和零地址指令14、30、31、16条:条:16条零地址为:条零地址为:11111111111100001111111111111111 14
22、条三地址为:条三地址为:0000 1101(保留保留1110、1111 两个码两个码)30条二地址为:条二地址为:11100000 11111101(保留(保留 2个码)个码)31条一地址为:条一地址为:111111100000 111111111110 (保留保留 1个码个码)指令操作码的扩展技术指令操作码的扩展技术165.1.2 操作数个数操作数个数(1)三地址指令:)三地址指令:(A1)OP(A2)A3OPA1A2A3(2)二地址指令:)二地址指令:(A1)OP(A2)A1A1:目的操作数:目的操作数A2:源操作数:源操作数(3)单地址指令:)单地址指令:(ACC)OP(A)ACCOP(
23、A)A单目操作:如单目操作:如NEG、INC等指令等指令OPA1A2OPA175.1.2 操作数个数操作数个数(4)零地址指令)零地址指令不涉及操作数:如不涉及操作数:如NOP、HLT指令指令操作数隐含:如操作数隐含:如PUSH、POP指令指令对于寄存器类型的操作数,地址对于寄存器类型的操作数,地址A指寄存器编号。指寄存器编号。OP18指令操作数来源和去向指令操作数来源和去向1 1、CPUCPU内部的通用寄存器:内部的通用寄存器:操作数存放在操作数存放在CPU的通用寄的通用寄存器中,地址码存器中,地址码A为寄存器号。为寄存器号。2 2、输入输出设备(接口)的一个寄存器。、输入输出设备(接口)的
24、一个寄存器。操作数存放在操作数存放在外设中,地址码外设中,地址码A为其地址信息。(为其地址信息。(IO统一编址统一编址:MIPS IO单独编址:单独编址:x86)3 3、主存储器的一个存储单元。、主存储器的一个存储单元。操作数存放在主存中,地操作数存放在主存中,地址码址码A为其地址信息为其地址信息4 4、立即数。、立即数。操作数直接存放在指令中操作数直接存放在指令中5.1.2 指令操作数来源和去向19例:例:X、Y、Z是存放三个操作数的存储单元地址。分别用三地是存放三个操作数的存储单元地址。分别用三地址、二地址、一地址结构的指令实现址、二地址、一地址结构的指令实现(X)+(Y)-Z 的程的程序
25、段,并分析比较,序段,并分析比较,见下图:见下图:指令格式指令格式 程序程序 特点特点一地址结构一地址结构ADD X,Y,Z只需一条指令,但指令长只需一条指令,但指令长度较长度较长二地址结构二地址结构MOV Z,YADD Z,X需两条指令,但指令长度需两条指令,但指令长度变短变短三地址结构三地址结构LOAD XADD YSTORE Z需三条指令,指令长度最需三条指令,指令长度最短短20操作数类型与数据存储方式操作数类型与数据存储方式(1)操作数类型操作数类型地址地址数字数字字符字符逻辑数逻辑数无符号整数无符号整数定点数、浮点数、二定点数、浮点数、二_十进制数十进制数ASCII逻辑运算,逻辑运算
26、,bit(2)数据在存储器中的存放方式数据在存储器中的存放方式字地址字地址 为为 低字节低字节 地址地址Intel字地址字地址 为为 高字节高字节 地址地址Motorola37621540字地址字地址04低字节低字节04512673字地址字地址04低字节低字节21存储器中的数据存放存储器中的数据存放(存储字长为存储字长为 32 位位)地址地址(十进制十进制)0 4 812162024283236双字双字双字(地址双字(地址32)双字双字双字(地址双字(地址24)半字(地址半字(地址20)半字(地址半字(地址22)半字(地址半字(地址16)半字(地址半字(地址18)字节字节(地址地址8)字节字节
27、(地址地址9)字节字节(地址地址10)字节字节(地址地址11)字(地址字(地址 4)字(地址字(地址 0)字节字节(地址地址14)字节字节(地址地址15)字节字节(地址地址13)字节字节(地址地址12)边界对准边界对准 22 指令指令是用户使用计算机和计算机本身运行的最小是用户使用计算机和计算机本身运行的最小的功能单元:的功能单元:用于设计程序用于设计程序,指令是由多个二进制指令是由多个二进制位组成的数串位组成的数串,计算机硬件可直接识别和执行。通计算机硬件可直接识别和执行。通常情况下一台计算机需要提供哪些指令呢?常情况下一台计算机需要提供哪些指令呢?计算机用于计算和处理数据,为此,要在计算机
28、硬计算机用于计算和处理数据,为此,要在计算机硬件系统中设置件系统中设置 5 5 种类型的部件:种类型的部件:运算器部件运算器部件、控制器控制器部件部件、存储器部件存储器部件、输入设备输入设备、输出设备输出设备,各自承担,各自承担数据运算数据运算、系统指挥控制系统指挥控制、保存当前程序和数据保存当前程序和数据、执、执行行输入输入和执行和执行输出输出的功能。需要在计算机中设置为使的功能。需要在计算机中设置为使用和控制这几个部件运行的相应指令。用和控制这几个部件运行的相应指令。也可换一个角度说,写程序要使用哪些类型的指也可换一个角度说,写程序要使用哪些类型的指令呢?令呢?5.1.3 指令分类指令分类
29、23输入设备输入设备输出设备输出设备入出接口和总线入出接口和总线外存设备外存设备主存储器主存储器高速缓存高速缓存控控 制制 器器运运 算算 器器使用硬件系统用到的基本指令使用硬件系统用到的基本指令ADDSUBANDORMVRRSHRRCLOUTSTORE PUSHJUMPJRCJRNCJRZJRNZCALLRETLOAD POPIN24指令的功能和分类指令的功能和分类 指令用于设计程序指令用于设计程序,指令系统构成最低级别的程,指令系统构成最低级别的程序设计语言,程序设计人员通过指令直接指挥计算机序设计语言,程序设计人员通过指令直接指挥计算机的硬件完成某一个基本的运算、处理功能,例如:的硬件完
30、成某一个基本的运算、处理功能,例如:对数值数据的算术运算,对逻辑数据的逻辑运算,对数值数据的算术运算,对逻辑数据的逻辑运算,在计算机部件之间传送、保存数据,在计算机部件之间传送、保存数据,从外部向计算机内输入数据,从外部向计算机内输入数据,把计算机内部计算结果输出出来,把计算机内部计算结果输出出来,按照某种条件控制计算机选择执行某段程序,按照某种条件控制计算机选择执行某段程序,当然还有另外一些方面的更深层次的要求当然还有另外一些方面的更深层次的要求 等;等;可以按照指令执行的功能对它们们进行分类。可以按照指令执行的功能对它们们进行分类。25指令的功能分类指令的功能分类-1算术与逻辑运算指令算术
31、与逻辑运算指令 加、减、乘、除、变符号加、减、乘、除、变符号 等算术运算等算术运算 与、或、非、异或与、或、非、异或 等逻辑运算等逻辑运算移位操作指令移位操作指令 算术移位(一般只右移)、逻辑移位、循环移位算术移位(一般只右移)、逻辑移位、循环移位 数据传送指令数据传送指令 通用寄存器之间传送通用寄存器之间传送 通用寄存器与主存储器存储单元之间传送通用寄存器与主存储器存储单元之间传送 主存储器不同存储单元之间传送主存储器不同存储单元之间传送输入输出指令输入输出指令 通用寄存器与输入输出设备(接口)之间传送通用寄存器与输入输出设备(接口)之间传送26指令的功能分类指令的功能分类-2转移指令转移指
32、令 变动程序中指令执行次序的指令,分为无条件转移指变动程序中指令执行次序的指令,分为无条件转移指令和条件转移指令令和条件转移指令子程序调用与返回指令子程序调用与返回指令 子程序调用与返回指令要配合使用,子程序的最后一子程序调用与返回指令要配合使用,子程序的最后一条指令一定是返回指令,执行结束后返回主程序断点条指令一定是返回指令,执行结束后返回主程序断点堆栈操作指令堆栈操作指令 堆栈(堆栈(stack)是由若干个连续存储单元组成的先进后)是由若干个连续存储单元组成的先进后出的存储区,有压入(即进栈)和弹出(即退栈)操作出的存储区,有压入(即进栈)和弹出(即退栈)操作其他指令其他指令 置条件码指令
33、、开中断指令、关中断指令置条件码指令、开中断指令、关中断指令 停机指令、空操作指令、特权指令停机指令、空操作指令、特权指令275.2 寻址方式什么叫寻址方式?什么叫寻址方式?寻址方式寻址方式(又称编址方式)指的是确定本条指(又称编址方式)指的是确定本条指令的操作数地址及下一条要执行的指令地址的方法。令的操作数地址及下一条要执行的指令地址的方法。一个指令系统采用什么样的寻址方式与存储结一个指令系统采用什么样的寻址方式与存储结构及其存取方式有关。构及其存取方式有关。通常在指令中为每一个操作数专设一个地址字段,通常在指令中为每一个操作数专设一个地址字段,用来表示数据的来源或去向的地址。用来表示数据的
34、来源或去向的地址。在指令中给出在指令中给出的操作数(或指令)的地址被称为的操作数(或指令)的地址被称为形式地址形式地址,使用形式地址信息并按一定规则,使用形式地址信息并按一定规则计算出计算出来来或或读操作得到的读操作得到的一个数值才是数据(或指令)的一个数值才是数据(或指令)的实际地址实际地址(有效地址、物理地址有效地址、物理地址)。28指令寻址1、顺序寻址方式、顺序寻址方式控制器中控制器中使用程序计数器使用程序计数器PC来指示指令在内存中的来指示指令在内存中的地址地址。在程序顺序执行时,指令的地址码由。在程序顺序执行时,指令的地址码由PC自加自加1得出。得出。指令在内存中按顺序存放,当顺序执
35、行一段程序时,指令在内存中按顺序存放,当顺序执行一段程序时,根据根据PC从存储器取出当前指令,从存储器取出当前指令,PC自动自动1,然后,然后执行这条指令执行这条指令;接着又根据;接着又根据PC指示从存储器取出下指示从存储器取出下一条指令,一条指令,PC自动自动1,执行执行。2、跳跃寻址方式、跳跃寻址方式当程序执行转移指令时,程序不再顺序执行,而是当程序执行转移指令时,程序不再顺序执行,而是跳转到另一个地址去执行,此时,跳转到另一个地址去执行,此时,由该条转移指令由该条转移指令的地址码字段可以得到新指令地址,然后将其置入的地址码字段可以得到新指令地址,然后将其置入PC中。中。29数据寻址指令的
36、地址码字段,通常都不代表操作数的真实地址,把它称作形式地址,记为A。操作数的真实地址称为有效地址,记作EA,它是由寻址方式和形式地址共同来确定的。305.2.1 存储结构与存取方式 一个指令系统采用什么样的寻址方式与存储结一个指令系统采用什么样的寻址方式与存储结构及其存取方式有关。构及其存取方式有关。1.CPU1.CPU中的寄存器中的寄存器 访问时只需给出寄存器号或隐含约定(根据操访问时只需给出寄存器号或隐含约定(根据操作码)。称为可编址寄存器。作码)。称为可编址寄存器。2.2.主存主存 访问时应给出相应的存储单元号访问时应给出相应的存储单元号3.3.堆栈堆栈 堆栈的操作在栈顶实现,栈顶地址有
37、堆栈指针寄存堆栈的操作在栈顶实现,栈顶地址有堆栈指针寄存器器SPSP给出,用隐地址访问。给出,用隐地址访问。315.2.1 存储结构与存取方式4.4.外存外存 访问时,用户给出文件名,系统给出外存访问时,用户给出文件名,系统给出外存的寻址信息。通常不由指令直接给出,而由的寻址信息。通常不由指令直接给出,而由主机以命令字形式给出。主机以命令字形式给出。5.5.外设外设 访问时,主机通过外设中的相关寄存器实访问时,主机通过外设中的相关寄存器实现与外设的现与外设的I/OI/O传送。可将这些寄存器与主传送。可将这些寄存器与主存统一编址,或为其分配专门的存统一编址,或为其分配专门的I/OI/O端口地端口
38、地址。址。325.2.1 基本寻址方式1.立即寻址方式立即寻址方式由指令直接给出操作数。由指令直接给出操作数。操作码操作码OP OP 立即数立即数S S定长格式:定长格式:变长格式变长格式:基本指令基本指令 立即数立即数S S数在指令中,数在指令中,其长度固定、其长度固定、位数有限。位数有限。数在基本指令之数在基本指令之后,其长度可变。后,其长度可变。用来提供常数、设置初值等。用来提供常数、设置初值等。例如:例如:MOV R0,AAAA(教学机教学机)MOV AL,5 MOV AX,3406H(x86)操作码操作码OP OP 立即数立即数S S定长格式:定长格式:变长格式变长格式:基本指令基本
39、指令 立即数立即数S S数在指令中,数在指令中,其长度固定、其长度固定、位数有限。位数有限。数在基本指令之数在基本指令之后,其长度可变。后,其长度可变。操作码操作码OP OP 立即数立即数S S定长格式:定长格式:变长格式变长格式:基本指令基本指令 立即数立即数S S操作码操作码OP OP 立即数立即数S S定长格式:定长格式:变长格式变长格式:基本指令基本指令 立即数立即数S S数在指令中,数在指令中,其长度固定、其长度固定、位数有限。位数有限。332、直接寻址方式 指令直接给出操作数地址指令直接给出操作数地址.操作数地址为寄存器地址则操作数地址为寄存器地址则称为寄存器直接寻址,操作数地址为
40、存储器地址则称为存称为寄存器直接寻址,操作数地址为存储器地址则称为存储器直接寻址。储器直接寻址。存储单元号存储单元号寄存器号寄存器号(数在数在M M中中)(数在数在R R中中)操作码操作码OP OP 寄存器号寄存器号R R (1 1)寄存器直接寻址)寄存器直接寻址(寄存器寻址)(寄存器寻址)格式格式R R所占位数少;所占位数少;访问访问R R比访问比访问M M快快但但R R数量有限数量有限S=S=(R R)34直接寻址方式例例.指令:指令:INC R1 1000HR02000HR13A00HR23C00HR335直接寻址方式(2 2)存储器直接寻址)存储器直接寻址操作码操作码OP OP 有效地
41、址有效地址D D(直接寻址)(直接寻址)定长格式定长格式变长格式变长格式 基本指令基本指令 D DL L D DH HD D的位数可覆盖的位数可覆盖整个存储空间整个存储空间S=S=(D D)用于访问固定的存储单元。指令中能给出的直用于访问固定的存储单元。指令中能给出的直接地址空间范围有限。(受指令长度限制)接地址空间范围有限。(受指令长度限制)36例例.指令:指令:INC 2000H1000H1000H1A00H1A00H2000H2000H 1B00H 1B00H.M373、间接寻址方式间接寻址方式间接寻址方式 指令给出操作数的间接地址。目的:相对直接寻址,扩指令给出操作数的间接地址。目的:
42、相对直接寻址,扩大寻址范围。大寻址范围。存储单元号存储单元号寄存器号寄存器号(数在数在M M中中)(数在数在M M中中)格式格式(1 1)存储器间址)存储器间址操作码操作码OP OP 间接地址间接地址D D D=0030D=003000600060.00600060 S S.S=(D)S=(D)M间址单元间址单元地址指针地址指针间址单元地址间址单元地址操作数地址操作数地址操作数操作数MM38间接寻址方式(2 2)寄存器间址)寄存器间址操作码操作码OP OP 寄存器号寄存器号R R 格式格式R R所占位数少;所占位数少;R R可提供全字长地可提供全字长地址码;修改址码;修改R R内容比修改内容比
43、修改M M内容快。内容快。S=(R)S=(R)R=02R=02 M00400040 S S.地址指针地址指针0040寄存器号寄存器号操作数地址操作数地址操作数操作数RM394、堆栈寻址堆栈寻址堆栈寻址格式格式 操作码操作码OP OP 堆栈指针堆栈指针S SP P SPSPS=(SP)S=(SP)00700070栈顶栈顶SPSP既可出现在指令中,也可隐含约定。既可出现在指令中,也可隐含约定。M低低高高堆栈向上生成堆栈向上生成压栈:压栈:SPSP自动减自动减1 1,再存数。,再存数。-(SP)-(SP),自减型间址自减型间址。先取数,先取数,SPSP再自动加再自动加1 1。(SP)+(SP)+,自
44、增型间址自增型间址。出栈出栈:S S.405、变址寻址方式变址寻址方式变址寻址方式 指令给出一个寄存器号和一个地址量,寄存器内容与地址指令给出一个寄存器号和一个地址量,寄存器内容与地址量之和为有效地址。量之和为有效地址。变址寄存器号变址寄存器号S=(S=(R(RX X)+D D)格式格式操作码操作码OP OP R RX X D D 形式地址形式地址变址量变址量基准地址(数值)基准地址(数值)41变址寻址方式例例.用变址方式访问一组连续区间内的数组元素。用变址方式访问一组连续区间内的数组元素。D=D=首址首址D D为存储区首址;为存储区首址;(RX)(RX)为所访单元距离为所访单元距离首址的长度
45、;首址的长度;RXRX初值为初值为0 0,每访问一,每访问一个单元,个单元,(RX)+1(RX)+1。n-1n-1.0 01 12 2.D+1D+1D+2D+2D+n-1D+n-1.426、基址寻址方式基址寻址方式基址寻址方式 指令给出一个寄存器号和一个地址指令给出一个寄存器号和一个地址量,寄存器内容与地址量之和为有量,寄存器内容与地址量之和为有效地址。效地址。格式格式基址寄存器号基址寄存器号R Rb b 4K 4K操作码操作码OP OP R Rb b D D 位移量位移量S=(S=(R(Rb b)+D D)基准地址基准地址 相对于基址的位移相对于基址的位移 M.R Rb b 4K 4KD=2
46、D=2D=2D=243基址寻址方式便于访问两维数组中某类指定的元素。便于访问两维数组中某类指定的元素。比如比如:4K 4K 4K 4KR Rb b M.R Rb bD=2D=2D=2D=2学生姓名学生姓名性别性别性别性别年龄年龄年龄年龄学生姓名学生姓名44变址与基址的区别:变址与基址的区别:变址与基址的区别:变址变址:指令提供:指令提供基准量基准量(不变不变),R R提供提供修改量修改量(可变可变);适于处理一维数组。;适于处理一维数组。基址基址:指令提供:指令提供位移量位移量(不变不变),R R提供提供基准量基准量(可变可变);用于扩大有限字长指令的访存空间。;用于扩大有限字长指令的访存空间
47、。457、相对寻址方式相对寻址方式相对寻址方式 指令给出位移量,指令给出位移量,PCPC内容与位移量之和为有效内容与位移量之和为有效地址。地址。格式格式位移量位移量操作码操作码OP OP PCPC D D 程序计数器,由寄存器号选定或隐含指定程序计数器,由寄存器号选定或隐含指定S=(PC)S=(PC)D)D)有效地址相对有效地址相对PCPC上下浮动上下浮动,给编程带来方便给编程带来方便。46寻址特征:寻址方式的编码寻址特征:寻址方式的编码寻址特征 R-R指令编码例子 OP:4bit Ms:源操作数寻址特征 3bit Rs:源寄存器地址 3bit Md:目的操作数寻址特征 3bit Rs:目的寄
48、存器地址 3bit Ms/Md:000 寄存器直接 操作数=(Rn)001 寄存器间接 操作数=(Rn)010 寄存器间接、自增 操作数=(Rn),Rn=Rn+1 011 相对 转移目标地址=(PC)+(Rn)寻址特征 单地址编码例子操作码操作码OP OP MsMs Rs Rs Md Rd Md Rd475.2 指令格式举例指令格式举例OPR1R2 RR格式格式8 4 4OPR1XBD RX格式格式8 4 4 4 12OPR1R3BD RS格式格式8 4 4 4 12OPBDI SI格式格式8 8 4 12OPB1D1LB2D2 SS格式格式8 8 4 12 4 12二地址二地址 R R基址加
49、变址寻址基址加变址寻址二地址二地址 R M三地址三地址 R M基址寻址基址寻址二地址二地址 M M 基址寻址基址寻址基址寻址基址寻址立即数立即数 M(1)IBM 360指令格式指令格式寄存器寻址寄存器寻址48(2)MIPS计算机系统计算机系统 MIPS是上个世纪八十年代中推出的RISC结构的计算机系统,获得了很大的成功。MIPS32是32位字长、典型RISC结构的计算机,其指令格式规范,只有种,用到的寻址方式和指令条数少。第1种指令称为R型指令型指令,完成寄存器之间数据运算功能,例如,rd rs op rt,rd (rs rt),即 rs的内容比rt的内容小则置1rd,否则清0;第2种指令称为
50、I型指令型指令,完成寄存器内容和立即数之间的运算功能,例如,rt rs op immediate,存储器读写功能,rt memorybase+offset,memorybase+offset rt,相对转移功能,若rt=rs 转移到地址 PC+offset*4;否则顺序执行,若rt rs 转移到地址 PC+offset*4;否则顺序执行。第3种指令称为J型指令型指令,完成无条件跳转的操作功能。49 MIPS指令格式指令格式 rs,rt,rd:rs,rt,rd:源和目的寄存器源和目的寄存器 shamt:shamt:移位次数(立即数)移位次数(立即数)funct:funct:运算类型运算类型 所有