1、计算机组成原理计算机组成原理 第第3章章指令系统指令系统计算机组成原理计算机组成原理 第第3章章 指令和指令系统是计算机中最基本的指令和指令系统是计算机中最基本的概念。指令是指示计算机执行某些操作的概念。指令是指示计算机执行某些操作的命令,一台计算机的所有指令的集合构成命令,一台计算机的所有指令的集合构成该机的指令系统,也称指令集。指令系统该机的指令系统,也称指令集。指令系统是计算机的主要属性,位于硬件和软件的是计算机的主要属性,位于硬件和软件的交界面上。本章将讨论一般计算机的指令交界面上。本章将讨论一般计算机的指令系统所涉及的基本问题。系统所涉及的基本问题。计算机组成原理计算机组成原理 第第
2、3章章裸机裸机软件软件指令系统指令系统计算机组成原理计算机组成原理 第第3章章3.1 指令格式指令格式3.2 寻址技术寻址技术3.3 堆栈堆栈与堆栈操作与堆栈操作3.4 指令类型指令类型3.5 指令系统的发展指令系统的发展 计算机组成原理计算机组成原理 3.1 指令格式指令格式3.1.1 机器指令的基本格式机器指令的基本格式 一条指令就是机器语言的一个语句,一条指令就是机器语言的一个语句,它是一组有意义的二进制代码。指令的基它是一组有意义的二进制代码。指令的基本格式如下:本格式如下:操作码字段操作码字段地址码字段地址码字段操作码操作码:指明操作的性质及功能。:指明操作的性质及功能。操作码操作码
3、 地址码地址码:指明操作数的地址,特殊情况:指明操作数的地址,特殊情况下也可能直接给出操作数本身。下也可能直接给出操作数本身。地址码地址码注意计算机组成原理计算机组成原理 3.1 指令格式指令格式 指令的长度是指一条指令中所包含的二进指令的长度是指一条指令中所包含的二进制代码的位数,它取决于操作码字段的长度、制代码的位数,它取决于操作码字段的长度、操作数地址的个数及长度。指令长度应:操作数地址的个数及长度。指令长度应:尽可能短尽可能短 等于字节的整数倍等于字节的整数倍 指令长度可以等于机器字长,也可以大于指令长度可以等于机器字长,也可以大于或小于机器字长。或小于机器字长。在一个指令系统中,若所
4、有指令的长度都在一个指令系统中,若所有指令的长度都是相等的,称为定长指令字结构;若各种指令是相等的,称为定长指令字结构;若各种指令的长度随指令功能而异,称为变长指令字结构。的长度随指令功能而异,称为变长指令字结构。计算机组成原理计算机组成原理 3.1 指令格式指令格式3.1.2 地址码结构地址码结构 一条一条双操作数指令双操作数指令的除操作码之外,还的除操作码之外,还应包含以下信息:应包含以下信息:第一操作数地址,用第一操作数地址,用A1表示;表示;第二操作数地址,用第二操作数地址,用A2表示;表示;操作结果存放地址,用操作结果存放地址,用A3表示;表示;下条将要执行指令的地址,用下条将要执行
5、指令的地址,用A4表示。表示。这些信息可以在指令中明显的给出,称这些信息可以在指令中明显的给出,称为为显地址显地址;也可以依照某种事先的约定,用;也可以依照某种事先的约定,用隐含的方式给出,称为隐含的方式给出,称为隐地址隐地址。下面以下面以双操作数指令双操作数指令为例讨论地址码结为例讨论地址码结构。构。计算机组成原理计算机组成原理 3.1 指令格式指令格式1.四地址指令四地址指令OPOPA A1 1A A2 2A A3 3A A4 4 (A1)OP(A2)A3 A4=下条将要执行下条将要执行指令的地址指令的地址538+10020030040010020030050100200300400指令指
6、令下一指令下一指令53指令指令 5 3 8下一指令下一指令400+计算机组成原理计算机组成原理 10020030050指令指令下一指令下一指令53513.1 指令格式指令格式2.三地址指令三地址指令OPOPA A1 1A A2 2A A3 3(A1)OP(A2)A3(PC)+1=下条将要执下条将要执行指令的地址行指令的地址程序计数器:程序计数器:存放当前指令地址存放当前指令地址指令指令 5 3 8下一指令下一指令+100200300538+执行一条三地址指执行一条三地址指令需令需4次访问主存。次访问主存。100200300 +计算机组成原理计算机组成原理(A1)OP(A2)A13.1 指令格式
7、指令格式3.二地址指令二地址指令OPOPA A1 1A A2 2(PC)+1=下条将要执行下条将要执行指令的地址指令的地址 A1中原存内容在中原存内容在指令执行后被破坏。指令执行后被破坏。目的操作数地址目的操作数地址源操作数地址源操作数地址 执行一条二地址执行一条二地址指令需指令需4次访问主存。次访问主存。10020030050指令指令下一指令下一指令5351指令指令 5 3 8下一指令下一指令+100200538+100200+计算机组成原理计算机组成原理(Acc)OP(A1)Acc3 3.1 指令格式指令格式4.一地址指令一地址指令OPOPA A1 1(PC)+1=下条将下条将要执行指令的
8、地要执行指令的地址址累加寄存器累加寄存器 执行一条一执行一条一地址指令需地址指令需2次访次访问主存。问主存。10020030050指令指令下一指令下一指令351指令指令 3下一指令下一指令+100538+100+计算机组成原理计算机组成原理 3.1 指令格式指令格式5.零地址指令零地址指令OPOP 操作数地址是隐含的。参加运算的操操作数地址是隐含的。参加运算的操作数放在堆栈中,运算结果也放在堆栈中。作数放在堆栈中,运算结果也放在堆栈中。有关堆栈的概念将在稍后讨论。有关堆栈的概念将在稍后讨论。计算机组成原理计算机组成原理 3.1 指令格式指令格式 指令中地址个数的选取要考虑诸多的指令中地址个数的
9、选取要考虑诸多的因素。从缩短程序长度,用户使用方便,因素。从缩短程序长度,用户使用方便,增加操作并行度等方面来看,选用三地址增加操作并行度等方面来看,选用三地址指令格式较好;从缩短指令长度,减少访指令格式较好;从缩短指令长度,减少访存次数,简化硬件设计等方面来看,一地存次数,简化硬件设计等方面来看,一地址指令格式较好。对于同一个问题,用三址指令格式较好。对于同一个问题,用三地址指令编写的程序最短,但指令长度最地址指令编写的程序最短,但指令长度最长,而用二、一、零地址指令来编写程序,长,而用二、一、零地址指令来编写程序,程序的长度一个比一个长,但指令的长度程序的长度一个比一个长,但指令的长度一个
10、比一个短。一个比一个短。注意计算机组成原理计算机组成原理 3.1 指令格式指令格式例:计算例:计算x=(ab+c-d)(e+f)三地址指令:三地址指令:MULA,B,XADDX,C,XSUBX,D,XADDE,F,YDIVX,Y,X 5条指令,每条指令条指令,每条指令4次访存,执行此程次访存,执行此程序共访存序共访存20次。次。计算机组成原理计算机组成原理 3.1 指令格式指令格式二地址指令:二地址指令:MOVX,AMULX,BADDX,CSUBX,DMOVY,EADDY,FDIVX,Y 7条指令,条指令,MOV指令指令3次访存,算逻指令次访存,算逻指令4次访存,执行此程序共访存次访存,执行此
11、程序共访存23+54=26次次。计算机组成原理计算机组成原理 3.1 指令格式指令格式一地址指令:一地址指令:LOAD EADD FSTORE XLOAD AMULBADDCSUBDDIVXSTORE X 9条指令,每条指令,每条指令条指令2次访存,次访存,执行此程序共访执行此程序共访存存92=18次次计算机组成原理计算机组成原理 3.1 指令格式指令格式3.1.3 指令的操作码指令的操作码 指令系统中的每一条指令都有一个唯指令系统中的每一条指令都有一个唯一确定的操作码,指令不同,其操作码的一确定的操作码,指令不同,其操作码的编码也不同。为了能表示整个指令系统中编码也不同。为了能表示整个指令系
12、统中的全部指令,指令的操作码字段应当具有的全部指令,指令的操作码字段应当具有足够的位数。足够的位数。指令操作码的编码可以分为指令操作码的编码可以分为规整型规整型和和非规整型非规整型两类:两类:规整型(定长编码)规整型(定长编码)非规整型(变长编码)非规整型(变长编码)注意计算机组成原理计算机组成原理 3.1 指令格式指令格式 1.规整型规整型 操作码字段的位数和位置是固定的。操作码字段的位数和位置是固定的。假定:指令系统共有假定:指令系统共有m条指令,指令中条指令,指令中操作码字段的位数为操作码字段的位数为N位,则有如下关系式:位,则有如下关系式:Nlog2 m IBM 370机(字长机(字长
13、32位)的指令可分为位)的指令可分为三种不同的长度形式:半字长指令、单字长三种不同的长度形式:半字长指令、单字长指令和一个半字长指令。不论指令的长度为指令和一个半字长指令。不论指令的长度为多少位,其中操作码字段多少位,其中操作码字段一律都是一律都是8位位,8位位操作码字段允许容纳操作码字段允许容纳256条指令,实际上在条指令,实际上在IBM 370机中仅有机中仅有183条指令。条指令。计算机组成原理计算机组成原理 3.1 指令格式指令格式OPOPOPOPOPD2D1D1D2D2R1R1R1R2R2L1B1B2B2B2X2B1I28888844444444444881212121212RR型RX
14、型RS型SI型SS型计算机组成原理计算机组成原理 3.1 指令格式指令格式 定长编码对于简化硬件设计,减少指定长编码对于简化硬件设计,减少指令译码的时间是非常有利的,存在着信息令译码的时间是非常有利的,存在着信息冗余。冗余。计算机组成原理计算机组成原理 3.1 指令格式指令格式2.非规整型非规整型 操作码字段的位数不固定,且分散地操作码字段的位数不固定,且分散地放在指令字的不同位置上。放在指令字的不同位置上。PDP-11机(字长机(字长16位)的指令分为单位)的指令分为单字长、两字长、三字长三种,操作码字段字长、两字长、三字长三种,操作码字段占占416位不等,可遍及整个指令长度。位不等,可遍及
15、整个指令长度。操作码字段的位数和位置不固定将增操作码字段的位数和位置不固定将增加指令译码和分析的难度,使控制器的设加指令译码和分析的难度,使控制器的设计复杂化。计复杂化。计算机组成原理计算机组成原理 3.1 指令格式指令格式OPRR846261316OPS844OPOPOPOPOPOP1616SDD1683DDXSS66666610单字长(16位)二字长(32位)三字长(48位)地址地址1地址2计算机组成原理计算机组成原理 3.1 指令格式指令格式 最常用的非规整型编码方式是扩展操最常用的非规整型编码方式是扩展操作码法:作码法:让操作数地址个数多的指令(如三地让操作数地址个数多的指令(如三地址
16、指令)的操作码字段短些,操作数地址址指令)的操作码字段短些,操作数地址个数少的指令(如一或零地址指令)的操个数少的指令(如一或零地址指令)的操作码字段长些。作码字段长些。注意计算机组成原理计算机组成原理 3.1 指令格式指令格式 例如:设某机的指令长度为例如:设某机的指令长度为16位,操位,操作码字段为作码字段为4位,有三个位,有三个4位的地址码字段,位的地址码字段,其格式为:其格式为:如果按照定长编码的方法,如果按照定长编码的方法,4位操作码位操作码字段最多只能表示字段最多只能表示16条不同的三地址指令。条不同的三地址指令。OPOPA A1 1A A2 2A A3 34 4位位4 4位位4
17、4位位4 4位位计算机组成原理计算机组成原理 3.1 指令格式指令格式OPOPA A1 1A A2 2A A3 34 4位位4 4位位4 4位位4 4位位OPOP1515条三地址指令条三地址指令0000 XXXX YYYY ZZZZ0000 XXXX YYYY ZZZZ1110 XXXX YYYY ZZZZ1110 XXXX YYYY ZZZZ111111111515条二地址指令条二地址指令11111111 0000 XXXX YYYY 0000 XXXX YYYY1111 1110 XXXX YYYY1111 1110 XXXX YYYY1111 11111111 11111515条一地址指
18、令条一地址指令1111 11111111 1111 0000 XXXX 0000 XXXX1111 1111 1110 XXXX1111 1111 1110 XXXX1111 1111 11111111 1111 11111616条零地址指令条零地址指令1111 1111 11111111 1111 1111 0000 00001111 1111 1111 11111111 1111 1111 1111扩展窗口扩展窗口扩展窗口扩展窗口扩展窗口扩展窗口OPOPA1A1A2A2OPOPA1A1OPOP计算机组成原理计算机组成原理 3.1 指令格式指令格式 以下两点要注意:以下两点要注意:不允许短码
19、是长码的前缀,即短码不能不允许短码是长码的前缀,即短码不能与长码的开始部分的代码相同,否则将无法与长码的开始部分的代码相同,否则将无法保证解码的唯一性和实时性。保证解码的唯一性和实时性。各条指令的操作码一定不能重复雷同,各条指令的操作码一定不能重复雷同,而且各类指令的格式安排应统一规整。而且各类指令的格式安排应统一规整。计算机组成原理计算机组成原理 第第3章章3.1 指令格式指令格式3.2 寻址技术寻址技术3.3 堆栈堆栈与堆栈操作与堆栈操作3.4 指令类型指令类型3.5 指令系统的发展指令系统的发展 计算机组成原理计算机组成原理 3.2 寻址技术寻址技术 寻址,指的是寻找操作数的地址寻址,指
20、的是寻找操作数的地址或下或下一条将要执行的指令地址。一条将要执行的指令地址。寻址技术包括寻址技术包括编址方式和寻址方式。编址方式和寻址方式。计算机组成原理计算机组成原理 3.2 寻址技术寻址技术3.2.1 编址方式编址方式1.编址编址 通常,指令中的地址码字段将指出操通常,指令中的地址码字段将指出操作数的来源和去向,而操作数则存放在相作数的来源和去向,而操作数则存放在相应的存储设备中。在计算机中需要编址的应的存储设备中。在计算机中需要编址的设备主要有设备主要有CPU中的通用寄存器、主存储中的通用寄存器、主存储器和输入输出设备等器和输入输出设备等3种。种。计算机组成原理计算机组成原理 3.2 寻
21、址技术寻址技术2.编址单位编址单位(1)字编址字编址 编址单位编址单位=访问单位访问单位 每个编址单位所包含的信息量(二进每个编址单位所包含的信息量(二进制位数)与读或写一次寄存器、主存所获制位数)与读或写一次寄存器、主存所获得的信息量是相同的。早期的大多数机器得的信息量是相同的。早期的大多数机器都采用这种编址方式。都采用这种编址方式。计算机组成原理计算机组成原理 3.2 寻址技术寻址技术(2)字节编址字节编址 字节编址是为了适应非数值计算的需字节编址是为了适应非数值计算的需要。字节编址方式使编址单位与信息的基本要。字节编址方式使编址单位与信息的基本单位(一个字节)相一致,这是它的最大优单位(
22、一个字节)相一致,这是它的最大优点。然而,如果主存的访问单位也是一个字点。然而,如果主存的访问单位也是一个字节的话,那么主存的频带就太窄了。节的话,那么主存的频带就太窄了。编址单位访问单位编址单位访问单位 通常主存的访问单位是编址单位的若通常主存的访问单位是编址单位的若干倍。干倍。(3)位编址位编址 也有部分计算机系统采用位编址方式。也有部分计算机系统采用位编址方式。计算机组成原理计算机组成原理 3.2 寻址技术寻址技术3.指令中地址码的位数指令中地址码的位数 指令格式中每个地址码的位数是与指令格式中每个地址码的位数是与主存主存容量容量和和最小寻址单位最小寻址单位(即编址单位)有关联(即编址单
23、位)有关联的。主存容量越大,所需的地址码位数就越的。主存容量越大,所需的地址码位数就越长。对于相同容量来说,如果以字节为最小长。对于相同容量来说,如果以字节为最小寻址单位,地址码的位数就需要长些;如果寻址单位,地址码的位数就需要长些;如果以字为最小寻址单位(假定字长为以字为最小寻址单位(假定字长为16位或更位或更长),地址码的位数可以减少。设某机主存长),地址码的位数可以减少。设某机主存容量为容量为220 个字节,机器字长个字节,机器字长32位。若最小位。若最小寻址单位为字节(按字节编址),其地址码寻址单位为字节(按字节编址),其地址码应为应为20位;若最小寻址单位为字(按字编位;若最小寻址单
24、位为字(按字编址),其地址码只需址),其地址码只需18位。位。计算机组成原理计算机组成原理 3.2 寻址技术寻址技术3.2.2 数据寻址和指令寻址数据寻址和指令寻址 寻址可以分为数据寻址和指令寻址。寻址可以分为数据寻址和指令寻址。寻找操作数的地址称为数据寻址,寻找操作数的地址称为数据寻址,数据寻数据寻址方式较多,其最终目的都是寻找所需要址方式较多,其最终目的都是寻找所需要的操作数的操作数。寻找下一条将要执行的指令地。寻找下一条将要执行的指令地址称为指令寻址,指令寻址比较简单,它址称为指令寻址,指令寻址比较简单,它又可以细分为顺序寻址和跳跃寻址。又可以细分为顺序寻址和跳跃寻址。注意计算机组成原理
25、计算机组成原理 3.2 寻址技术寻址技术 顺序寻址可通过程序计数器顺序寻址可通过程序计数器PC加加1,自动形成下一条指令的地址;跳跃寻址则自动形成下一条指令的地址;跳跃寻址则需要通过程序转移类指令实现。需要通过程序转移类指令实现。跳跃寻址的转移地址形成方式有三种:跳跃寻址的转移地址形成方式有三种:直接(绝对)、相对和间接寻址,它与下直接(绝对)、相对和间接寻址,它与下面介绍的数据寻址方式中的直接、相对和面介绍的数据寻址方式中的直接、相对和间接寻址是相同的,只不过寻找到的不是间接寻址是相同的,只不过寻找到的不是操作数的有效地址而是转移的有效地址而操作数的有效地址而是转移的有效地址而已。已。计算机
26、组成原理计算机组成原理 3.2 寻址技术寻址技术 3.2.3 基本的数据寻址方式基本的数据寻址方式 寻址方式是根据指令中给出的地址码寻址方式是根据指令中给出的地址码字段寻找真实操作数地址的方式。字段寻找真实操作数地址的方式。指令中的形式地址指令中的形式地址A有效地址有效地址EA寻址方式寻址方式OPOP立即数立即数 在取指令时,操作码和操作数被同时取在取指令时,操作码和操作数被同时取出,不必再次访问存储器,从而提高了指令出,不必再次访问存储器,从而提高了指令的执行速度。但是,因为操作数是指令的一的执行速度。但是,因为操作数是指令的一部分,不能被修改,且立即数的大小将受到部分,不能被修改,且立即数
27、的大小将受到指令长度的限制。指令长度的限制。1.立即寻址立即寻址计算机组成原理计算机组成原理 3.2 寻址技术寻址技术2.寄存器寻址寄存器寻址 指令中地址码部分指令中地址码部分给出某一通用寄存器的给出某一通用寄存器的编号,所指定的寄存器编号,所指定的寄存器中存放着操作数。中存放着操作数。两个明显的优点:两个明显的优点:从寄存器存取数据从寄存器存取数据比主存快得多;比主存快得多;由于寄存器的数量由于寄存器的数量较少,其地址码字段比较少,其地址码字段比主存单元地址字段短得主存单元地址字段短得多。多。操作数操作数OP指令寄存器指令寄存器 通用寄存器通用寄存器RiR5操作数操作数S=(Ri)操作数操作
28、数EA=RiR5计算机组成原理计算机组成原理 操作数操作数OP指令寄存器指令寄存器主存储器主存储器A3.2 寻址技术寻址技术3.直接寻址直接寻址 指令中地址码指令中地址码字段给出的地址字段给出的地址A就是操作数的有效就是操作数的有效地址:地址:EA=A 由于操作数由于操作数地址是不能修改的,地址是不能修改的,与程序本身所在的与程序本身所在的位置无关,所以又位置无关,所以又叫做叫做绝对寻址绝对寻址方式。方式。操作数操作数100操作数操作数S=(A)100计算机组成原理计算机组成原理 3.2 寻址技术寻址技术4.间接寻址间接寻址 指令中给出的地指令中给出的地址址A不是操作数的地不是操作数的地址,而
29、是存放操作数址,而是存放操作数地址的地址。地址的地址。EA=(A)通常在指令格式通常在指令格式中划出一位作为标中划出一位作为标志位。志位。=0 直接寻址直接寻址 =1 间接寻址间接寻址操作数操作数EAOP指令寄存器指令寄存器主存储器主存储器A操作数操作数 100操作数操作数S=(A)100200200计算机组成原理计算机组成原理 3.2 寻址技术寻址技术 间接寻址要比直接寻址灵活得多,它间接寻址要比直接寻址灵活得多,它的主要优点为:的主要优点为:扩大了寻址范围,可用指令的短地址扩大了寻址范围,可用指令的短地址访问大的主存空间。访问大的主存空间。可将主存单元作为程序的地址指针,可将主存单元作为程
30、序的地址指针,用以指示操作数在主存中的位置。当操作用以指示操作数在主存中的位置。当操作数的地址需要改变时,不必修改指令,只数的地址需要改变时,不必修改指令,只需修改存放有效地址的那个主存单元(间需修改存放有效地址的那个主存单元(间接地址单元)的内容就可以了。接地址单元)的内容就可以了。计算机组成原理计算机组成原理 3.2 寻址技术寻址技术 除去一级间接寻除去一级间接寻址外,还有多级间接址外,还有多级间接寻址。多级间接寻址寻址。多级间接寻址为取得操作数需要多为取得操作数需要多次访问主存,即使在次访问主存,即使在找到操作数有效地址找到操作数有效地址后,还需再访问一次后,还需再访问一次主存才可得到真
31、正的主存才可得到真正的操作数。操作数。多级间接标志:多级间接标志:0:找到有效地址:找到有效地址 1:继续间接寻址:继续间接寻址EAOP指令寄存器指令寄存器主存储器主存储器A110二级间址二级间址三级间址三级间址操作数操作数100操作数操作数1 2001 3000 5010020030050计算机组成原理计算机组成原理 EAOP指令寄存器指令寄存器主存储器主存储器Ri操作数操作数 通用寄存器通用寄存器3.2 寻址技术寻址技术 5.寄存器间接寻址寄存器间接寻址 指令中的地址码给指令中的地址码给出某一通用寄存器的出某一通用寄存器的编号,被指定的寄存编号,被指定的寄存器中存放操作数的有器中存放操作数
32、的有效地址,而操作数则效地址,而操作数则存放在主存单元中。存放在主存单元中。这种寻址方式的这种寻址方式的指令较短,并且在取指令较短,并且在取指后只需一次访存便指后只需一次访存便可得到操作数。可得到操作数。操作数操作数操作数操作数S=(Ri)100R5EA=(Ri)R5100计算机组成原理计算机组成原理 3.2 寻址技术寻址技术6.变址寻址变址寻址 把指令给出的把指令给出的形式地址形式地址A与变址与变址寄存器寄存器RX的内容相的内容相加,形成操作数有加,形成操作数有效地址:效地址:EA=A+(RX)RX 的内容为变的内容为变址值。址值。120OP指令寄存器指令寄存器主存储器主存储器A操作数操作数
33、R RX X变址值变址值XALU变址寄存器变址寄存器R RX X操作数操作数10020操作数操作数S=(A+(RX)计算机组成原理计算机组成原理 3.2 寻址技术寻址技术 变址寻址是一种广泛采用的寻址方式,变址寻址是一种广泛采用的寻址方式,通常指令中的形式地址作为基准地址,而通常指令中的形式地址作为基准地址,而RX的内容作为修改量。在遇到需要频繁修的内容作为修改量。在遇到需要频繁修改地址时,无须修改指令,只要修改变址改地址时,无须修改指令,只要修改变址值就可以了。值就可以了。例如:要把一组连续存放在主存单元例如:要把一组连续存放在主存单元中的数据(首地址是中的数据(首地址是A)依次传送到另一存
34、)依次传送到另一存储区(首地址为储区(首地址为B)中去,则只需在指令中)中去,则只需在指令中指明两个存储区的首地址指明两个存储区的首地址A和和B(形式地(形式地址),用同一变址寄存器提供修改量址),用同一变址寄存器提供修改量K,即,即可实现可实现(A+K)B+K。变址寄存器的内容在。变址寄存器的内容在每次传送之后自动地修改。每次传送之后自动地修改。计算机组成原理计算机组成原理 3.2 寻址技术寻址技术7.基址寻址基址寻址 将基址寄存器将基址寄存器Rb的内容与位移量的内容与位移量D相相加,形成操作数有效加,形成操作数有效地址:地址:EA=(Rb)+D 基址寄存器的内基址寄存器的内容称为基址值,指
35、令容称为基址值,指令的地址码字段是一个的地址码字段是一个位移量,位移量,位移量可正位移量可正可负可负。OP指令寄存器指令寄存器主存储器主存储器D操作数操作数R Rb b基址值基址值ALU基址寄存器基址寄存器Rb120操作数操作数20100操作数操作数S=(Rb)+D)计算机组成原理计算机组成原理 3.2 寻址技术寻址技术 基址寻址和变址寻址在形成有效地址基址寻址和变址寻址在形成有效地址时所用的算法是相同的,而且在一些计算时所用的算法是相同的,而且在一些计算机中,这两种寻址方式都是由同样的硬件机中,这两种寻址方式都是由同样的硬件来实现的。来实现的。但这两种寻址方式应用的场合不同,但这两种寻址方式
36、应用的场合不同,变址寻址是面向用户的,用于访问字符串、变址寻址是面向用户的,用于访问字符串、向量和数组等成批数据;而基址寻址面向向量和数组等成批数据;而基址寻址面向系统,主要用于逻辑地址和物理地址的变系统,主要用于逻辑地址和物理地址的变换,用以解决程序在主存中的再定位和扩换,用以解决程序在主存中的再定位和扩大寻址空间等问题。在某些大型机中,基大寻址空间等问题。在某些大型机中,基址寄存器只能由特权指令来管理,用户指址寄存器只能由特权指令来管理,用户指令无权操作和修改。令无权操作和修改。计算机组成原理计算机组成原理 操作数操作数操作数操作数OP指令寄存器指令寄存器主存储器主存储器D指令指令指令地址
37、指令地址ALU程序计数器程序计数器PC-D+D3.2 寻址技术寻址技术8.相对寻址相对寻址 相对寻址是基址相对寻址是基址寻址的一种变通,由寻址的一种变通,由程序计数器程序计数器PC提供提供基准地址,即:基准地址,即:EA=(PC)+D 位移量指出的是位移量指出的是操作数和现行指令之操作数和现行指令之间的相对位置。间的相对位置。120操作数操作数20100操作数操作数S=(PC)+D)100-20 E0操作数操作数计算机组成原理计算机组成原理 3.2 寻址技术寻址技术 相对寻址方式的特点:相对寻址方式的特点:操作数的地址不是固定的,它随着操作数的地址不是固定的,它随着PC值值的变化而变化,并且与
38、指令地址之间总是相的变化而变化,并且与指令地址之间总是相差一个固定值差一个固定值 D。当指令地址改变时,由。当指令地址改变时,由于其位移量不变,使得操作数与指令在可用于其位移量不变,使得操作数与指令在可用的存储区内一起移动,所以仍能保证程序的的存储区内一起移动,所以仍能保证程序的正确执行。采用正确执行。采用PC相对寻址方式编写的程相对寻址方式编写的程序可在主存中任意浮动,它放在主存的任何序可在主存中任意浮动,它放在主存的任何地方,所执行的效果都是一样的。地方,所执行的效果都是一样的。由于由于指令中给出的位移量可正、可负,所指令中给出的位移量可正、可负,所以对于指令地址而言,操作数地址可能在指以
39、对于指令地址而言,操作数地址可能在指令地址之前或之后。令地址之前或之后。计算机组成原理计算机组成原理 3.2 寻址技术寻址技术9.页面寻址页面寻址 页面寻址相当于将整个主存空间分成若页面寻址相当于将整个主存空间分成若干个大小相同的区,每个区称为一页,每页干个大小相同的区,每个区称为一页,每页有若干个主存单元。每页都有自己的编号,有若干个主存单元。每页都有自己的编号,称为页面地址;页面内的每个主存单元也有称为页面地址;页面内的每个主存单元也有自己的编号,称为页内地址。这样,操作数自己的编号,称为页内地址。这样,操作数的有效地址就被分为两部分:前部为页面地的有效地址就被分为两部分:前部为页面地址,
40、后部为页内地址。址,后部为页内地址。页内地址页内地址页面地址页面地址计算机组成原理计算机组成原理 3.2 寻址技术寻址技术 页内地址由指令页内地址由指令的地址码的地址码A自动直接自动直接提供,它与页面地址提供,它与页面地址通过简单的通过简单的拼装连接拼装连接就可得到有效地址。就可得到有效地址。根据页面地址的来源根据页面地址的来源不同,有三种不同的不同,有三种不同的页面寻址:页面寻址:64KB0页页1页页2页页255页页0000255255255255页内地址页内地址(8位位)页面地址页面地址(8位位)64KB0页页1页页2页页511页页0000127127127127页内地址页内地址(7位位)
41、页面地址页面地址(9位位)页内地址页内地址(9位位)页面地址页面地址(7位位)64KB0页页1页页2页页127页页0000511511511511计算机组成原理计算机组成原理 指令寄存器指令寄存器主存储器主存储器OPA0页页1页页N-1页页指令指令所在页所在页0页页操作数操作数0页页3.2 寻址技术寻址技术 (1)基页寻址(零页寻址)。由于页面地址等基页寻址(零页寻址)。由于页面地址等于全于全0,所以有效地址,所以有效地址EA=0A(在这里在这里表示简单拼接),操作数表示简单拼接),操作数S在零页面中。在零页面中。A页内地址页内地址页面地址页面地址EA操作数操作数380000000000000
42、0000000380038255页页64K计算机组成原理计算机组成原理 指令寄存器指令寄存器主存储器主存储器OPA0页页1页页N-1页页指令指令所在页所在页指令指令所在页所在页操作数操作数PCHPCLPCH程序计数器程序计数器3.2 寻址技术寻址技术 (2)当前页寻址。页面地址就等于程序计数当前页寻址。页面地址就等于程序计数器器PC的高位部分,所以有效地址的高位部分,所以有效地址EA=(PC)H A,操作数,操作数S与指令本身处于同一页面中。与指令本身处于同一页面中。页内地址页内地址页面地址页面地址EA操作数操作数APCH操作数操作数38382F852F2F38255页页64K511页页2FB
43、8计算机组成原理计算机组成原理 3.2 寻址技术寻址技术 (3)页寄存器寻址。页面地址取自页寄存器,页寄存器寻址。页面地址取自页寄存器,与形式地址相拼接形成操作数有效地址:与形式地址相拼接形成操作数有效地址:EA=(页寄存器页寄存器)A 有些计算机在指令格式中设置了一个页有些计算机在指令格式中设置了一个页面标志位(面标志位(Z/C)。当)。当Z/C=0,表示零页寻,表示零页寻址,当址,当Z/C=1,表示当前页寻址。,表示当前页寻址。计算机组成原理计算机组成原理 各种数据寻址方式获得数据的速度(由各种数据寻址方式获得数据的速度(由快到慢)快到慢)立即寻址立即寻址寄存器寻址寄存器寻址直接寻址直接寻
44、址寄存器间接寻址寄存器间接寻址页面寻址页面寻址变址寻址(基址寻址、相对寻址)变址寻址(基址寻址、相对寻址)一级间接寻址一级间接寻址多级间接寻址多级间接寻址 3.2 寻址技术寻址技术注意计算机组成原理计算机组成原理 3.2 寻址技术寻址技术 为了能区分出各种不同寻址方式,必须为了能区分出各种不同寻址方式,必须在指令中给出标识。标识的方式通常有两种:在指令中给出标识。标识的方式通常有两种:显式和隐式显式和隐式。显式的方法就是在指令中设置专门的寻显式的方法就是在指令中设置专门的寻址方式(址方式(MOD)字段,用二进制代码来表)字段,用二进制代码来表明寻址方式类型。明寻址方式类型。隐式的方式是由指令的
45、操作码字段说明隐式的方式是由指令的操作码字段说明指令格式并隐含约定寻址方式。指令格式并隐含约定寻址方式。AMODOP显式显式AOP隐式隐式计算机组成原理计算机组成原理 3.2 寻址技术寻址技术 注意,一条指令若有两个或两个以注意,一条指令若有两个或两个以上的地址码时,上的地址码时,各地址码可采用不同的各地址码可采用不同的寻址方式寻址方式。例如,源地址采用一种寻址。例如,源地址采用一种寻址方式,而目的地址采用另一种寻址方式。方式,而目的地址采用另一种寻址方式。MOV AX,(BX)寄存器直接寻址寄存器直接寻址寄存器间接寻址寄存器间接寻址计算机组成原理计算机组成原理 第第3章章3.1 指令格式指令
46、格式3.2 寻址技术寻址技术3.3 堆栈堆栈与堆栈操作与堆栈操作3.4 指令类型指令类型3.5 指令系统的发展指令系统的发展 计算机组成原理计算机组成原理 3.3 堆栈堆栈与堆栈操作与堆栈操作 堆栈是一种按特定顺序进行存取的存堆栈是一种按特定顺序进行存取的存储区,这种特定顺序可归结为储区,这种特定顺序可归结为“后进先出后进先出”(LIFO)或)或“先进后出先进后出”(FILO)。)。计算机组成原理计算机组成原理 3.3 堆栈堆栈与堆栈操作与堆栈操作3.3.1 堆栈结构堆栈结构1.寄存器堆栈寄存器堆栈 用一组专门的寄存器构成寄存器堆栈,用一组专门的寄存器构成寄存器堆栈,又称为硬堆栈。这种堆栈的栈
47、顶是固定的,又称为硬堆栈。这种堆栈的栈顶是固定的,寄存器组中各寄存器是相互连接的,它们寄存器组中各寄存器是相互连接的,它们之间具有对应位自动推移的功能,即可将之间具有对应位自动推移的功能,即可将一个寄存器的内容推移到相邻的另一个寄一个寄存器的内容推移到相邻的另一个寄存器中去。存器中去。计算机组成原理计算机组成原理 3.3 堆栈与堆栈操作堆栈与堆栈操作寄存器0寄存器1寄存器2寄存器k-1压入弹出栈顶b0bn-2bn-1计算机组成原理计算机组成原理 3.3 堆栈与堆栈操作堆栈与堆栈操作2.存储器堆栈存储器堆栈 从主存中划出一段区域来作堆栈,这种从主存中划出一段区域来作堆栈,这种堆栈又称为软堆栈,堆
48、栈的大小可变,栈底堆栈又称为软堆栈,堆栈的大小可变,栈底固定,栈顶浮动,故需要一个专门的硬件寄固定,栈顶浮动,故需要一个专门的硬件寄存器作为堆栈栈顶指针存器作为堆栈栈顶指针SP,简称栈指针。栈,简称栈指针。栈指针所指定的主存单元,就是堆栈的栈顶。指针所指定的主存单元,就是堆栈的栈顶。高地址高地址低地址低地址堆栈区自底向上生成自底向上生成方式的堆栈方式的堆栈计算机组成原理计算机组成原理 3.3 堆栈与堆栈操作堆栈与堆栈操作 堆栈的栈底地址大于栈顶地址,通常栈堆栈的栈底地址大于栈顶地址,通常栈指针始终指向指针始终指向栈顶的满单元栈顶的满单元。进栈时,。进栈时,SP的的内容需要先自动减内容需要先自动
49、减1,然后再将数据压入堆栈。,然后再将数据压入堆栈。20001FFF(SP)-1SP 修改栈指针修改栈指针(A)(SP)将将A中的数据压入堆栈中的数据压入堆栈SP2000A2000原栈顶单元现栈顶单元1FFF1FFF注意计算机组成原理计算机组成原理 3.3 堆栈与堆栈操作堆栈与堆栈操作 出栈时,需要先将堆栈中的数据弹出,出栈时,需要先将堆栈中的数据弹出,然后然后SP的内容再自动加的内容再自动加1。2000(SP)A 将栈顶内容弹出,送入将栈顶内容弹出,送入A中中(SP)+1SP 修改栈指针修改栈指针SP1FFF1FFFA1FFF原栈顶单元现栈顶单元1FFF1FFF2000注意计算机组成原理计算
50、机组成原理 3.3 堆栈与堆栈操作堆栈与堆栈操作3.3.2 堆栈操作堆栈操作 在一般计算机中,堆栈主要用来暂存在一般计算机中,堆栈主要用来暂存中断断点、子程序调用时的返回地址、状中断断点、子程序调用时的返回地址、状态标志及现场信息等,也可用于子程序调态标志及现场信息等,也可用于子程序调用时参数的传递,所以用于访问堆栈的指用时参数的传递,所以用于访问堆栈的指令只有进栈(压入)和出栈(弹出)两种。令只有进栈(压入)和出栈(弹出)两种。在堆栈计算机(如在堆栈计算机(如HP-3000、B5000等)等)中,没有一般计算机中必备的通用寄存器,中,没有一般计算机中必备的通用寄存器,因此堆栈就成为提供操作数
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。