第7章指令系统7.1机器指令7.2操作数类型和操作类型7.3寻址方式7.4指令格式举例7.5RISC技术7.1机器指令一、指令的一般格式操作码字段地址码字段1.操作码反映机器做什么操作(1)长度固定(2)长度可变用于指令字长较长的情况操作码分散在指令字的不同字段中便于译码,扩展性差能缩短指令平均长度增加译码和分析的难度,使控制器复杂,采用扩展操作码技术扩展操作码技术操作码的位数随地址数的减少而增加OPA1A2A3000000011110…A1A1A1…A2A2A2…A3A3A3…A2A2A2…A3A3A3…111111111111…000000011110…111111111111…111111111111…111111111111…000000011111…111111111111…111111111111…A3A3A3…000000011110…4位操作码8位操作码12位操作码16位操作码最多15条三地址指令最多15条二地址指令最多15条一地址指令16条零地址指令操作码的位数随地址数的减少而增加OPA1A2A3000000011110…A1A1A1…A2A2A2…A3A3A3…A2A2A2…A3A3A3…111111111111…000000011110…111111111111…111111111111…111111111111…000000011111…111111111111…111111111111…A3A3A3…000000011110…4位操作码8位操作码12位操作码16位操作码三地址指令操作码每减少一种可多构成24种二地址指令二地址指令操作码每减少一种可多构成24种一地址指令例7.1假设指令指长为16位,操作数的地址码为6位,指令有零地址指令、一地址指令、二地址指令三种格式。①设操作码固定,若零地址指令有P种,一地址指令有Q种,则二地址指令最多有几种?②采用扩展操作码技术,若二地址指令有X种,零地址指令有Y种,则一地址指令最多有几种?2.地址码(1)四地址(2)三地址OPA1A2A3A486666A1第一操作数地址A2第二操作数地址A3结果的地址A4下一条指令地址若PC代替A4?(A1)OP(A2)A38888OPA1A2A3(A1)OP(A2)A3寻址范围26=64寻址范围28=256若A3用A1或A2代替?设指令字长为32位操作码固定为8位访存4次访存4次(3)二地址OPA1A281212(A1)OP(A2)A1(A1)OP(A2)A2或若ACC代替A1(或A2)(4)一地址(5)零地址OPA1824无地址码,例如:空操作(NOP),停机(HLT),子程序返回(RET)等。(ACC)OP(A1)ACC寻址范围212=4K寻址范围224=16M访存4次访存2次访存3次二、指令字长指令字长决定于操作码的长度指令字长=存储字长2.指令字长可变操作数地址的长度操作数地址的个数1.指令字长固定单字长、双字长、多字长取指快、译码简单。可提高编码效率,有时需要多次访问存储器才能取出一条完整指令。7.3寻址方式程序y=ax+b存储过程。存储器01234567891011(1)定义变量a,x,b,y问题一:程序和数据如何存储?(2)y=ax+b步骤分解LDA8MUL9ADD10STA11xabyxaby存储器01234567891011LDA8MUL9ADD10STA11????????ENDPCPCPCPCPC????????????????问题二:CPU如何找到指令?JMP7PC(1)顺序寻址程序计数器PC加1,自动形成下一条指令地址。(2)跳跃寻址下一条指令地址由指令的地址码给出。问题三:CPU如何找到数据?ALUCUACC….R0….JMP7HLTxaby01234567891011LDAxMULaADDbSTAyR8指令格式有效地址EA操作数的真实地址,由寻址特征和形式地址共同决定。形式地址A操作码OP寻址特征T例:假设某计算机系统,指令字长=存储字长=机器字长。设指令字长为16位,操作码4位,寻址特征4位。求各类指令的寻址范围,操作数范围和访存次数。1.直接寻址操作数M8•执行阶段访问一次存储器。•A的位数决定了操作数的寻址范围。形式地址A直接得到有效地址EA。寻址特点:LDA8M比较快地找到操作数?2.寄存器寻址操作数位于寄存器中,指令中的形式地址A是寄存器标号。操作数…………R0R8R15寄存器LDA8R•执行阶段不访存,执行速度快。•寄存器个数较少,寻址空间有限。寻址特点:如何扩大寻址范围?3.立即寻址•指令执行阶段不访存•A的位数限制了立即数的范围OP#A立即寻址特征立即数可正可负补码形式地址A就是操作数4.隐含寻址操作数地址隐含在操作码中ADDA操作数主存寻址特征AACC暂存ALU另一个操作数隐含在ACC中如8086MUL指令被乘数隐含在AX(16位)或AL(8位)中MOVS指令源操作数的地址隐含在SI中目的操作数的地址隐含在DI中•指令字中少了一个地址字段,可缩短指令字长5.间接寻址EA=(A)有效地址由形式地址间接提供OPA寻址特征AEA主存EAA1EAA1主存EA10•执行指令阶段2次访存•可扩大寻址范围•便于编制程序OPA寻址特征A一次间址多次间址操作数操作数多次访存……子程序主程序…8081201202调用子程序调用子程序间接寻址编程举例(A)=81(A)=202……@间址特征JMP@A…………EA=(Ri)6.寄存器间接寻址•有效地址在寄存器中,操作数在存储器中,执行阶段访存操作数主存OPRi寻址特征•便于编制循环程序地址…………R0RiRn寄存器有效地址在寄存器中7.基址寻址(1)采用专用寄存器作基址寄存器EA=(BR)+ABR为基址寄存器OPA操作数主存寻址特征ALUBR•可扩大寻址范围•有利于多道程序•BR内容由操作系统或管理程序确定•在程序的执行过程中BR内容不变,形式地址A可变(2)采用通用寄存器作基址寄存器操作数主存寻址特征ALUOPR0AR0作基址寄存器•由用户指定哪个通用寄存器作为基址寄存器通用寄存器R0Rn-1R1…•基址寄存器的内容由操作系统确定•程序执行过程中R0内容不变,形式地址A可变8.变址寻址EA=(IX)+AOPA操作数主存寻址特征ALUIX•可扩大寻址范围•便于处理数组问题•IX的内容由用户给定IX为变址寄存器(专用)•程序执行过程IX内容可变,形式地址A不变通用寄存器也可以作为变址寄存器9.相对寻址EA=(PC)+AA是相对于当前指令的位移量(可正可负,补码)•A的位数决定操作数的寻址范围•程序浮动•广泛用于转移指令操作数寻址特征ALUOPA相对距离A1000PC…主存1000AOP例7.2设相对寻址的转移指令占3个字节,第一字节为操作码,第二,三字节为相对位移量(补码表示),而且数据在存储器中采用以低字节地址为字地址的存放方式,每当CPU从存储器取出一个字节时,即自动完成(PC)+1PC.1)若PC当前值为240(十进制),要求转移到290(十进制),则转移指令的第二三字节的机器代码是什么?2)如PC当前值为240(十进制),要求转移到200(十进制),则转移指令的第二三字节的机器代码是什么?10.堆栈寻址(1)堆栈的特点堆栈硬堆栈软堆栈多个寄存器指定的存储空间先进后出(一个入出口)栈顶地址由SP指出–11FFFH+12000H进栈(SP)–1SP出栈(SP)+1SP栈顶栈底2000HSP2000H……1FFFHSP1FFFH栈顶栈底进栈出栈1FFFH栈顶2000H栈顶(2)堆栈寻址举例15200HACCSPX栈顶200H栈底主存151FFHACCSP15栈顶200H栈底主存X1FFHPUSHA前PUSHA后POPA前POPA后Y1FFHACCSPX栈顶200H栈底主存151FFH15200HACCSP栈顶200H栈底主存X15(3)SP的修改与主存编址方法有关①按字编址进栈出栈(SP)–1SP(SP)+1SP②按字节编址存储字长16位进栈出栈(SP)–2SP(SP)+2SP存储字长32位进栈出栈(SP)–4SP(SP)+4SP问:下图所指的寻址方式的名称:操作码操作数指令操作码寄存器指令操作数R操作码存储器指令操作数A操作码操作数A存储器寄存器指令R存储器指令操作码操作数A'A操作码操作数PC指令存储器AIA存储器寄存器R指令操作码操作数7.4指令格式举例一、设计指令格式时应考虑的各种因素1.指令系统的兼容性(向上兼容)2.其他因素操作类型数据类型指令格式包括指令个数及操作的难易程度指令字长是否固定寻址方式寄存器个数地址码位数、地址个数、寻址方式类型操作码位数、是否采用扩展操作码技术,确定哪些数据类型可参与操作指令寻址、操作数寻址寄存器的多少直接影响指令的执行时间3.Intel8086(1)指令字长(2)地址格式1~6个字节MOVWORDPTR[0204],0138H6字节INCAX1字节一地址NOP1字节CALL段内调用3字节零地址5字节段间调用寄存器–寄存器寄存器–立即数寄存器–存储器ADDAX,BX2字节ADDAX,[3048H]4字节ADDAX,3048H3字节二地址CALL例7.4某机字长16位,存储器直接寻址空间为128字,变址时的位移量为-64~+63,16个通用寄存器均可作为变址寄存器。设计一套指令系统格式,满足下列寻址类型的要求:(1)直接寻址的二地址指令3条(2)变址寻址的一地址指令6条(3)寄存器寻址的二地址指令8条(4)直接寻址的一地址指令12条(5)零地址指令32条。试问还有多少种代码未用。例7.5设某机配有基址寄存器和变址寄存器,采用一地址格式的指令系统,允许直接和间接寻址,且指令字长、机器字长和存储字长都为16位。(1)若采用单字长指令,共能完成105种操作,则指令可直接寻址的范围是多少?一次间接寻址的寻址范围是多少?画出其指令格式并说明各字段的含义?(2)若存储字长不变,可采用什么方法直接访问容量为16MB的主存?例7.6某模型机共有64种操作,操作码位数固定,且具有以下特点(1)采用一地址或二地址格式(2)有寄存器寻址、直接寻址和相对寻址(位移量为-128~+127)三种寻址方式。(3)有16个通用寄存器,算术运算和逻辑运算的操作数均在寄存器中,结果也在寄存器中。(4)取数/存数指令在寄存器和存储器之间传送数据。(5)存储器容量为1MB,按字节编址。要求设计算逻指令,取数/存数指令和相对转移指令的格式,并简述理由。7.5RISC技术一、RISC的产生和发展80—20规律典型程序中80%的语句仅仅使用处理机中20%的指令执行频度高的简单指令,因复杂指令的存在,执行速度无法提高RISC(ReducedInstructionSetComputer)CISC(ComplexInstructionSetComputer)——RISC技术能否用20%的简单指令组合不常用的80%的指令功能?二、RISC的主要特征选用使用频度较高的一些简单指令,复杂指令的功能由简单指令来组合指令长度固定、指令格式种类少、寻址方式少只有LOAD/STORE指令访存采用流水技术一个时钟周期内完成一条指令采用组合逻辑实现控制器CPU中有多个通用寄存器采用优化的编译程序三、CISC的主要特征系统指令复杂庞大,各种指令使用频度相差大指令长度不固定、指令格式种类多、寻址方式多访存指令不受限制大多数指令需要多个时钟周期执行完毕采用微程序控制器CPU中设有专用寄存器难以用优化编译生成高效的目的代码四、RISC和CISC的比较1.RISC更能充分利用VLSI芯片的面积2.RISC更能提高计算机运算速度指令数、指令格式、寻址方式少,寄存器窗口重叠技术通用寄存器多,采用组合逻辑,便于实现指令流水3.RISC便于设计,可降低成本,提高可靠性4.RISC有利于编译程序代码优化5.RISC不易实现指令系统兼容1.指令系统中采用不同寻址方式的目的主要是。A.实现存储程序的程序控制B.缩短指令长度,扩大寻址空间,提高编程灵活性C