【教学课件】第四章指令系统.ppt
第四章 指令系统,4.1 指令系统概述(掌握)4.2 指令格式(重点)4.3 寻址方式(重点)4.4 指令类型,一、概念指令:指示机器执行某种操作的命令。指令码:表示一条指令意义的二进制代码。指令格式:指令码的编码规则称为指令格式。一条指令由操作码和操作数两部分组成。操作码:指明本条指令的操作性质和功能。如算术运算、逻辑运算、存数、取数、转移等。每条指令分配一个确定的操作码。操作数:指出该条指令涉及的操作数有关的信息;如:直接给出操作数本身或者操作数的地址。指令系统:一台计算机所能执行的全部指令的集合。程序:使计算机执行某个特定任务的一系列指令序列。,4.1 指令系统概述,4.1 指令系统概述,计算机语言有:机器语言:0、1代码,机器可直接识别;汇编语言:符号化、需汇编程序翻译;高级语言:B、F、C、P需翻译(编译或解释)机器语言是以机器指令的形式书写的语言,其它类型的语言只有变成机器指令的形式,机器才能直接执行。高级语言与计算机的硬件结构及指令系统无关,汇编语言依赖于计算机的硬件结构和指令系统。不同的机器有不同的指令,所以用汇编语言编写的程序不能在其他类型的机器上运行。,一、概念,4.1 指令系统概述,指令系统:一台机器所包含的全部指令不同的计算机,其用途不同,系统结构不同,采用的硬软件技术不同,其指令系统的功能也不同,有的强大,有的弱小,但其指令不外乎以下几类:算逻运算类数据传送类指令控制类I/O类其它:停机,一、概念,4.1 指令系统概述,一、概念机器字长:指计算机能直接处理的二进制数据的位数,它决定了计算机的运算精度。机器字长通常与主存单元的位数一致;指令长度:指令码中二进制码的位数。它取决于操作码字段的长度、操作数地址的个数及长度。指令长度可以等于机器字长,也可以大于或小于机器字长。原则:尽可能短(节省存储空间、减少访存次数、提高指令的执行速度)等于字节的整数倍(充分利用存储空间)在一个指令系统中,若所有指令的长度都是相等的,称为定长指令字结构;若各种指令的 长度随指令功能而异,称为变长指令字结构。单字长指令:指令字长=机器字长半字长指令:指令字长=1/2机器字长双字长指令:指令字长=2倍机器字长,二、对指令系统的基本要求 1、完备性一台计算机中最基本的、必不可少的指令构成了指令系统的完备性。使系统能提供足够的指令用于编程;如:加、减、乘、除都有,若只有加法、移位指令,乘法:只能用加法、移位实现,速度慢2、有效性有效性是指利用该指令系统所提供的指令编制的程序能够产生高效率。高效率主要表现在空间和时间方面,即占用存储空间小、执行速度快。采用该指令系统编的程序能高效地运行:速度快、占内存少。即:指令格式要短,多用寄存器寻址,少访内存。,4.1 指令系统概述,二、对指令系统的基本要求 3、规整性规整性是指指令操作的对称性和匀齐性,指令格式与数据格式的一致性。对称性:指在指令系统中,所有的寄存器和存储单元都可同等对待,这对简化程序设计,提高程序的可读性非常有用。匀齐性:是指一种操作性质的指令可以支持各种数据类型。指令的格式与数据格式的一致性:是指指令长度与数据长度有一定关系,以方便存取和处理。,4.1 指令系统概述,4.1 指令系统概述,二、对指令系统的基本要求4、兼容性兼容性一般是指计算机的体系结构设计基本相同,机器之间具有相同的基本结构、数据表示和共同的基本指令集合。系列机:基本指令系统相同,基本结构相同的一系列计算机。一个系列有多种型号,各型号的结构基本相同,由于推出的时间不同,所采用的器件不同,故结构、性能有差异,但系列机必须做到一点:软件兼容(向上)-新机种的指令系统一定包含所有旧机种的所有指令系统,以保证在旧机种上运行的各种软件,可以不加修改地在所机种上运行,指令格式与机器的字长、存储器的容量及指令的功能密切相关。4.2.1 指令的组成两个字段:操作码字段+操作数地址字段:一、操作码操作码是指明指令操作性质的命令码。它提供指令的操作控制信息。每条指令都要求它的操作码必须是独一无二的位组合。指令系统中指令的个数N与操作码的位数n,必须满足关系式:N2n,4.2 指令格式,地址码字段A,操作码字段OP,4.2 指令格式,指令操作码的编码有两种组织方式:规整型和非规整型(1)规整型(定长编码):每条指令的操作码长度均相同指令条数m与指令操作码字段的位数N之间关系:m2N优点:简化了计算机的硬件设计,提高了指令译码和识别速度。缺点:当指令长度较短时,操作数地址的位数就会严重不足。适用:用于字长较长的大中型机或超小型机的指令系统,如32位或32位以上。举例:IBM370 机(字长32位),OP 8位(P70),4.2.1 指令的组成,(2)非规整型(变长编码)指令操作码的长度不尽相同将使用频率较高而地址码要求较多的指令用较少位表示操作码;对地址码位数要求较少的指令,用较多位表示操作码;对无操作数的指令,整个指令字均用作操作码。优点:在比较短的指令字中,既能表示出比较多的指令条数,又能尽量满足操作数地址的要求。缺点:计算机的硬件设计复杂,指令译码和执行速度较慢。(增加了硬件设计的复杂性)适应:适用于字长较短的计算机系统,如16位或16位以下的微型和小型计算机。以上两种方案,操作码一般在指令字的最高位部分。,4.2 指令格式 4.2.1 指令的组成,举例:PDP-11是16位的小型机,采用变长操作码。,4.2 指令格式4.2.1 指令的组成,二、地址码地址码指出参与操作的数据(存贮位置)计算机操作数的来源、去处:1、CPU内部的通用寄存器:最快,与运算器速度匹配,例如 MOVE R2,R1 2、内存的一个单元:次之,与运算器速度不匹配,尽量少访内,例如 MOVE R12,R1 3、外设接口中的寄存器:较慢,较少使用 例如 IN PORT 据指令中地址码部分地址的个数,指令格式可分为以下几种:零地址指令、一地址指令、二地址指令、三地址指令、四地址指令;,4.2 指令格式4.2.1 指令的组成,一.零地址指令格式这是一种没有操作数地址部分的指令格式。这种指令有两种可能:(1)无需任何操作数。如空操作指令,停机指令等。(2)所需的操作数是默认的:堆栈。堆栈的概念(a)是若干个存储单元(或寄存器)的有序集合,它顺序地存放一组元素。(b)数据的存取都只能在栈顶单元内进行,即数据的进栈与出栈都只能经过栈顶单元这个“出入口”。(c)堆栈中的数据采用“先进后出”或“后进先出”的存取工作方式。硬堆栈:寄存器堆。软堆栈:内存中的指定区域。,操作码OP,4.2 指令格式4.2.2 指令的格式,堆栈结构在计算机中的作用(a)具有堆栈结构的机器使用零地址指令,这不仅合指令长度短,指令结构简单,机器硬件简化。(b)实现程序调用,子程序嵌套调用和递归调用。(c)对于“中断”技术,堆栈更是不可缺少的,保存“断点”和“现场”。堆栈的操作设数据进栈方向为从高地址向低地址发展,当向堆栈压入数据时,SP的内容先自动递减而指向一个新的空栈顶单元,再把数据写入此栈顶单元;当数据弹出堆栈时,立即读出SP所指向的栈顶单元内容,再把SP内容自动递增而指向新的栈顶位置。即 PUSH X;(SP)-1SP(X)(SP)POP X;(SP)X(SP)+1SP 压栈:先修改SP,后存数据出栈:先取出数据,后修改SP,4.2 指令格式4.2.2 指令的格式,二、一地址指令格式(1)指令中给出的一个地址即是操作数的地址,又是操作结果的存储地址。如加1、减1、移位等单操作数指令。(2)在某些计算机中,指令中提供一个操作数地址,另一个操作数是由机内硬件寄存器“隐含”地自动提供的。所谓“隐含”是指此操作数在指令中不出现,而是按照事先约定由寄存器默认提供,运算结果仍送到寄存器中。因为这个寄存器在连续运算时,保存着多条指令连续操作的累计结果,故称为累加器(ACC)。例如:指令含义:(ACC)OP A1ACC(累加器);ACC中既放操作数,又放结果。(PC)+1 PC 下一条指令地址注意:如果地址是内存单元,执行一条一地址的指令,需要访问两次主存。,A1,操作码OP,4.2 指令格式4.2.2 指令的格式,设字长42位OP 6位每个A为36位寻址空间:236,A1,操作码OP,三、二地址指令格式(1)源地址(SS):把保存操作前操作数的地址称为源地址。(2)目的地址(DD):保存结果的地址称为目的地址。(3)通常二地址指令又称为双操作数指令。例如,双操作数加法指令:ADD R0,R1表示将R0寄存器的内容和R1寄存器的内容相加以后,将结果存入R1寄存器中。又如ADD(R0),R1表示将R0寄存器的内容作为地址,到内存中取出该地址所指向的单元内容作为源点操作数,和作为终点操作数的R1寄存器的内容相加以后,将结果存入R1寄存器中。注意:如果两地址均是内存单元,执行一条这类指令至少需访存4次。,4.2 指令格式4.2.2 指令的格式,设字长42位OP 6 位每个D为18位寻址空间:218,四、三地址指令格式其操作是对A1、A2指出的两个操作数进行操作码所规定的操作,并将结果存入A3中。例如:ADD X Y Z 含义为(X)+(Y)Z 即X单元内容加上Y单元内容,结果送Z单元中。注意:如果三地址均是内存单元,执行一条这类指令至少也要需访存4次。,4.2 指令格式4.2.2 指令的格式,设字长42位OP 6位每个D为12位寻址空间:212,五.多地址指令格式例如四地址指令格式。(1)含义:ADD X Y Z WA、(X)+(Y)ZB、(W)下一条指令地址(2)特点:A、直观明了;B、程序执行的流向明确;C、操作数和结果可以分散在内存各处。D、但是指令字长度太长。,4.2 指令格式4.2.2 指令的格式,设字长42位OP 6位每个D为12位寻址空间:212,总结:上述五种指令格式,并非所有计算机都有零地址,单地址,二地址指令,具有指令短,执行速度快,硬件实现简单等特点,多为结构较简单、字长较短的小型机、微机所采用。二地址,三地址、四地址指令,具有功能强,编程方便等特点,多为字长较长的大、中型机所采用。但不能一概而论,因还与指令本身的功能有关。如停机指令,不管什么类型的计算机,都有。,4.2 指令格式4.2.2 指令的格式,六、指令格式设计准则 1、指令字长要短,以得到时间和空间上的优势。2、指令字长必须有足够的长度。3、指令字长一般应是机器字符长度的整数倍以便存储系统的管理。若机器中字符码长是L位,则机器指令字长最好是L,2L,4L,8L等。4、指令格式的设计还与如何选定指令中操作数地址的位数有关。,4.2 指令格式4.2.2 指令格式,例如,对同一容量(如64KB)的存储器(1)若取存储单元为一字节长,则需要16位地址码,(2)若存储单元长度为32位,则只需14位地址码。方案(1)对字符操作方便,但地址码位数多,方案(2)地址码位数少,很有利,但字符操作困难,分辩率低。(存储器分辩率:指存储器能被区分、识别与操作的精细程度)注:1KB=1024=210字节;64KB=216字节若取存储单元为一字节长,要16根地址线寻址;若存储单元长度为32位长(四字节长)(216/4),要14根地址线寻址,4.2 指令格式4.2.3 指令格式,例(P90)4-3 某机为定长指令字结构,指令长度16位;每个操作数的地址码长6位,指令分为无操作数、单操作数和双操作数三类。若双操作数指令已有K种,无操作数指令已有L种,问单操作数指令最多可能有多少种?上述三类指令各自允许的最大指令条数是多少?,4.2 指令格式,双操作数指令K,无操作数指令L,设单操作数指令X,4.2 指令格式,(24-K)26-X26=L,留给单地址的扩展窗口,留给无地址的扩展窗口,(24-K),(24-K)26-X,X=(24-K)26-,上述三类指令各自允许的最大指令条数为:双操作数:24-1 单操作数:1526-1(假设双操作数指令仅1条,为无操作数指令留出1个扩展窗口)无操作数:14212(假设双操作数指令仅1条,单操作数指令留出1个扩展窗口)。如果单操作数指令仅取1条,则无操作数指令的数目还可以增多,但实现比较麻烦。,4.2 指令格式,一、概念指令寻址:如何找指令(PC)操作数寻址:如何找操作数本节的寻址:寻找操作数的地址地址分为 形式地址:指令中给出的地址 有效地址:操作数的真正地址(物理地址)寻址方式,与计算机硬件结构密切相关,对指令格式,功能也有很大影响。从程序角度看,寻址方式与汇编程序设计,高级语言的编译程序设计的关系都极为密切。,4.3 寻址方式,二、常用的寻址方式 1、立即寻址(1)含义:地址字段给出的是可以立即使用的操作数实际值,称立即寻址方式。(2)优缺点:A、优点:提供操作数最快 B、缺点:立即数的大小将受到指令长度的限制。例如:在IBM-PC指令系统中 MOV AX,100H,4.3 寻址方式,二、常用的寻址方式 2、寄存器寻址(1)含义:地址字段给出的是某一个通用寄存器的编号,该制定的寄存器中存放着操作数。(2)优点:A、由寄存器提供操作数要比主存提供操作数快;B、由于寄存器数量少,其地址码字段比主存地址码字段短的多。例如:在IBM-PC指令系统中 MOV AX,BX,4.3 寻址方式,寄存器寻址方式,操作数,二、常用的寻址方式3、直接寻址(1)含义:地址字段直接指明操作数在存储器内的位置的寻址方法。即形式地址等于有效地址,(2)优缺点:A、优点:直观 B、缺点:指令字长限制了一条指令所能够访问的最大主存空间;可使用可变字长指令格式来解决此局限性。利用扩大了的操作数地址码就能全部访问主存储器的所有的存储单元。例如:在IBM-PC指令系统中MOVAX,3000H,4.3 寻址方式,二、常用的寻址方式4、寄存器间接寻址方式(1)含义:指令字中地址码字段给出的是某一个通用寄存器的编号,在被指定的寄存器中存放的是操作数的有效地址,操作数存放在内存单元中。(2)优点:指令字短,访存次数少,编程带来灵活性,4.3 寻址方式,寄存器间接寻址方式,有效地址,Ri,操作数,二、常用的寻址方式5、间接寻址(1)含义:指令字中地址码字段给出的不是操作数地址,而是操作数地址的地址。(2)优缺点:A、优点:实现简便,对编程带来较大的灵活性 B、缺点:(a)多次访问内存,增加了指令的执行时间;(b)占用主存储器单元多。对程序编制能带来较大的灵活性表现在:(I)间接寻址方式的指令可以访问大的存储空间,扩大了指令的寻址能力。(II)当操作数地址改变时,只需修改间接地址指示器的单元内容,而不必修改指令,原指令的功能照样实现。这给程序编制带来很大方便。,4.3 寻址方式,二、常用的寻址方式5、间接寻址方式(3)间接寻址可分为一级间接寻址和多级间接寻址。一次间址:形式地址是操作数地址的地址多次间址:指令中设间址特征位,此位为1,继续间址,直至此位为0。P76,4.3 寻址方式,二级间接寻址方式,0 有效地址,二、常用的寻址方式6、变址寻址把指令给出的形式地址A与变址寄存器RX的内容相加,形成操作数有效地址:EA=A+(RX);RX 的内容为变址值。变址寻址是一种广泛采用的寻址方式,通常指令中的形式地址作为基准地址,而RX的内容作为修改量。在遇到需要频繁修改地址时,无须修改指令,只要修改变址值就可以了。,4.3 寻址方式,20,例如:在IBM-PC指令系统中MOVAX,COUNTSI,二、常用的寻址方式7、基址寻址方式(1)将基址寄存器Rb的内容与位移量D相加,形成操作数有效地址:EA=(Rb)+D 基址寄存器的内容称为基址值,指令的地址码字段是一个位移量,位移量可正可负。,4.3 寻址方式,D,二、常用的寻址方式7、基址寻址方式(2)基址寻址与变址寻址的比较:相同:有效地址的形成方式同,都能扩大寻址空间 不同:基址寻址中,基址寄存器提供基准量,形式地址提供偏移量,这个偏移量位数较短;而变址寻址中,变址寄存器提供变址量,形式地址提供基准量,这个基准量位数较长,足以表示整个存贮空间。变址:变址值(小)+形式地址(大)=有效地址 基址:基址值(大)+形式地址(小)=有效地址基址寄存器的内容不由用户确定,而由操作系统确定,一般是在把用户程序的逻辑地址转变为存贮器的物理地址时用,而变址寄存器的值由用户确定,且可随意改变。,4.3 寻址方式,二、常用的寻址方式8、相对寻址方式相对寻址是基址寻址的一种变通,基准地址由程序计数器PC提供,即:EA=(PC)+D;位移量指出的是操作数和现行指令之间的相对位置。相对寻址方式的特点:1、操作数的地址不是固定的,它随着 PC值的变化而变化,并且与指令地址之间总是相差一个固定值D。当指令地址改变时,由于其位移量不变,使得操作数与指令在可用的存储区内一起移动,所以仍能保证程序的正确执行。采用PC相对寻址方式编写的程序可在主存中任意浮动,它放在主存的任何地方,所执行的效果都是一样的。2、由于指令中给出的位移量可正、可负,所以对于指令地址而言,操作数地址可能在指令地址之前或之后。,4.3 寻址方式,二、常用的寻址方式9、页面寻址(扩充寻址)扩充地址寄存器内容作高位-页面地址 形式地址作低位-页内地址 二者联合-有效地址,4.3 寻址方式,根据页面地址的来源不同,有三种不同的页面寻址:基页寻址(零页寻址):由于页面地址等于全0,所以有效地址EA=0A(在这里表示拼接),操作数S 在零页面中。当前页寻址:页面地址就等于程序计数器PC的高位部分,所以有效地址EA=(PC)HA,操作数S与指令本身处于同一页面中。页寄存器寻址:页面地址取自页寄存器,与形式地址相拼接形成操作数有效地址:EA=(页寄存器)A,二、常用的寻址方式10、复合寻址方式:(A)变址间址寻址方式:其含义是先将变址寄存器的内容IX和形式地址D相加得到(IX)+D,然后再作间接寻址,得到操作数的有效地址。故操作数的有效地址为:EA=(IX)+D)(B)间址变址寻址方式:含义是先将形式地址取间接变换(D)=N,然后把N和变址寄存器的内容IX相加,得到操作数的有效地址。故操作数的有效地址为:EA=N+IX=(D)+(IX),4.3 寻址方式,例如:IX先变址后间址:000010+100000=100010 有效地址:000011 操作数:000001 先间址后变址:(D)+(IX)=100100+000010=100110,一、数据传送类指令(1)寄存器至寄存器:(2)存储器至寄存器:(3)寄存器至存储器:(4)存储器至存储器:数据传送指令一次可以传送一个数据或一批数据,有些机器设置了数据交换指令,可实现双向传送。堆栈操作指令是一种特殊的数据传送指令。压入指令(PUSH)是把指定的操作数送入栈顶,而弹出指令(POP)的操作刚好相反,是把栈顶的数据取出,送到指令所指定的目的地。,4.4 指令类型,二、运算类指令1、算术运算指令加法,减法,乘法和除法等指令。2、逻辑运算指令逻辑运算主要是对布尔变量的运算。基本操作:包括逻辑与,逻辑或与逻辑非3种基本操作;组合逻辑操作:例如:异或。(1)逻辑与指令:(2)逻辑或指令:(3)逻辑非指令:(4)逻辑异或指令:算术逻辑运算指令除了给出运算结果外,往往还要给出某些状态信息。如运算结果的正、负;运算结果是否为零;是否有溢出;是否有低位向高位的进位等,供其它指令或程序分析时使用。,4.4 指令类型,三、移位指令 1、算术移位:左移或右移(右移时符号位不变)2、逻辑移位:左移或右移(右移时符号位补0)3、循环移位:左移或右移。,4.4 指令类型,四、程序控制类指令(1)转移指令:包括无条件转移指令和条件转移指令。(2)转子与返回指令:子程序是一组可以共享的指令序列,可被主程序调用执行。转子指令与转移指令之间最大的差别在于:转移指令无需返回,而转子指令则需要。子程序调用指令就是用来调用子程序的。为了能够从子程序中正确返回到断点继续执行,并能支持多重嵌套和递归调用,现代计算机通常用堆栈来保存返回地址。(3)程序中断指令:中断一般是计算机系统出现异常情况或特殊请求时随机产生的。一般在计算机中,中断指令作为隐指令不提供用户使用。但在某些计算机中设置了可供用户使用的中断指令,以实现系统功能调用和程序请求。如IBM PC的中断指令,PDP-11的自陷指令等。,五、输入/输出类指令这是用来处理机与外部设备之间进行通信的一类指令。以处理机为基准,信息由外部设备传向处理机称为输入(Input),信息由处理机传给外部设备称为输出(Output)。一元化总线的计算机如PDP-11,不需设置专门的I/O指令,可以用一般的数据传送类指令实现输入和输出;对于主存和外设不采用统一编址技术的计算机来说,则需要有专门的I/O指令,如IBM PC就是一个典型的例子。,4.4 指令类型,六、字符串处理指令 非数值处理能力;字符串处理指令一般包括字符串传送、比较、查询、转换等指令。七、处理机控制类指令 包括停机指令、等待指令、空操作指令、开中断指令、关中断指令、设置条件码指令等。,八、特权指令这类指令只能用于操作系统或其它系统软件,而不提供给用户使用,称特权指令。一般来说,在单用户、单任务的计算机中不一定需要特权指令,而在多用户、多任务的计算机系统中,特权指令却是必不可少的。它主要用于系统资源的分配和管理,包括改变系统的工作方式、检测用户的访问权限、修改虚拟存储器管理的段表、页表和完成任务的创建和切换等。,4.4 指令类型,两大类:(1)复杂指令集计算机(Complex Instruction Set Computer:CISC)指令系统十分庞大,指令类型、寻址方式较多,机器语言和高级语言之间的语义差距正在缩小。(2)精简指令集计算机(Reduced Instruction Set Computer:RISC)。选用使用频率最高的少数指令,尽量使所有的简单指令在一个机器周期内执行完,采用大量的寄存器、高速缓冲存储器等技术,通过优化编译程序,提高处理速度。RISC结构的计算机中,机器语言和高级语言的差距较大,这个差距主要靠提高计算机运行速度和配置优化编译程序来弥补。,计算机指令结构分类,举例,例1:机器字长16位,内存容量64KB,指令为单字长指令,有50种操作,采用页面,间接和直接三种寻址方式。1、指令格式如何安排?2、存贮器能划分为多少页面?每页多少单元?3、能否再增加其它寻址方式?若能,能增加几种?解:50种操作-操作码位数6-26=64 采用3种寻址方式-区分寻址方式标志位2位22=4,按字节为贮存单元寻址:64KB28216 28=256,能,只能增加1种。,举例,例2:某机采用三地址格式指令,试问完成一条加法指令共需访问几次存贮器?若该机指令系统共能完成60种不同的操作,且MAR为10位,试确定该机器的指令格式。解:4次(取指、取数、取数、存数)完成60种不同的操作需6位操作码26=64 MAR(地址寄存器)为10位,每个地址码也应10位.,6 10 10 10,OP D1 D2 D3,例3:某指令系统的指令字长12位,每个地址码长3位,试提出一种分配方案,使该指令系统有4条三地址指令,8条二地址指令,180条单地址指令。若二地址指令仅有7条,单地址指令最多可有多少条?,或:(23-4)23-7)23=200,若二地址仅7条,则多出:11 111 000 111共8条 单地址最多可有200条,举例,最多可有192条,练习:某计算机字长16位,地址码是6位,指令有无地址、一地址和二地址三种格式,设有N条二地址指令,无地址指令M条,试问一地址指令最多有多少条?,举例,解:设一地址指令有X条二地址指令:最多可有24条,实际有N条一地址指令:最多可有(24-N)*26条,实际有X条无地址指令:最多可有(24-N)*26 X)*26条,实际有M条 故可列等式:(24-N)*26-X)*26=M解得:X=(24-N)*26-M*2-6,