资源描述
计算机组成与系统结构第章第章 指指 令令 系系 统统7.1 机器指令机器指令 7.2 操作数类型和操作类型操作数类型和操作类型 7.3 寻址方式寻址方式 7.4 指令格式举例指令格式举例 7.5 RISC 技术技术 7.1 机机 器器 指指 令令一、指令的一般格式一、指令的一般格式 操作码字段操作码字段 地址码字段地址码字段1.操作码操作码反映机器做什么操作反映机器做什么操作(1)长度固定长度固定(2)长度可变长度可变用于指令字长较长的情况用于指令字长较长的情况,RISC如如 IBM 370操作码操作码 8 位位操作码分散在指令字的不同字段中操作码分散在指令字的不同字段中(3)扩展操作码技术扩展操作码技术操作码的位数随地址数的减少而增加操作码的位数随地址数的减少而增加OP A1 A2 A3000000011110A1A1A1A2A2A2A3A3A3A2A2A2A3A3A3111111111111000000011110111111111111111111111111111111111111000000011111111111111111111111111111A3A3A30000000111104 位操作码位操作码8 位操作码位操作码12 位操作码位操作码16 位操作码位操作码最多最多15条三地址指令条三地址指令最多最多15条二地址指令条二地址指令最多最多15条一地址指令条一地址指令16条零地址指令条零地址指令7.1(3)扩展操作码技术扩展操作码技术操作码的位数随地址数的减少而增加操作码的位数随地址数的减少而增加OP A1 A2 A3000000011110A1A1A1A2A2A2A3A3A3A2A2A2A3A3A3111111111111000000011110111111111111111111111111111111111111000000011111111111111111111111111111A3A3A30000000111104 位操作码位操作码8 位操作码位操作码12 位操作码位操作码16 位操作码位操作码三地址指令操作码三地址指令操作码每减少一种可多构成每减少一种可多构成24 种二地址指令种二地址指令二地址指令操作码二地址指令操作码每减少一种可多构成每减少一种可多构成24 种一地址指令种一地址指令7.12.地址码地址码(1)四地址四地址(2)三地址三地址OP A1 A2 A3 A48 6 6 6 6A1 第一操作数地址第一操作数地址A2 第二操作数地址第二操作数地址A3 结果的地址结果的地址A4 下一条指令地址下一条指令地址若若 PC 代替代替 A4(A1)OP(A2)A38 8 8 8 OP A1 A2 A3(A1)OP(A2)A34 次访存次访存4 次访存次访存寻址范围寻址范围 26=64寻址范围寻址范围 28=256若若 A3 用用 A1 或或 A2 代替代替7.1设指令字长为设指令字长为 32 位位操作码固定为操作码固定为 8 位位(3)二地址二地址OP A1 A28 12 12(A1)OP(A2)A1(A1)OP(A2)A2或或4 次访存次访存若若ACC 代替代替 A1(或(或A2)若结果存于若结果存于 ACC (4)一地址一地址(5)零地址零地址OP A18 24无地址码无地址码(ACC)OP(A1)ACC2 次访存次访存寻址范围寻址范围 212=4 K寻址范围寻址范围 224=16 M 3次访存次访存7.1二、指令字长二、指令字长指令字长决定于指令字长决定于操作码的长度操作码的长度指令字长指令字长=存储字长存储字长2.指令字长指令字长 可变可变操作数地址的长度操作数地址的长度操作数地址的个数操作数地址的个数1.指令字长指令字长 固定固定按字节的倍数变化按字节的倍数变化7.1Q:比较指令字长、机器字长、存储字长小结小结 当用一些硬件资源代替指令字中的地址码字段后当用一些硬件资源代替指令字中的地址码字段后 当指令的地址字段为寄存器时当指令的地址字段为寄存器时 可扩大指令操作数的寻址范围可扩大指令操作数的寻址范围 可缩短指令字长可缩短指令字长 可减少访存次数可减少访存次数 三地址三地址 OP R1,R2,R3 二地址二地址 OP R1,R2 一地址一地址 OP R1 指令执行阶段不访存指令执行阶段不访存 可缩短指令字长可缩短指令字长7.17.2 操作数类型和操作种类操作数类型和操作种类一、操作数类型一、操作数类型地址地址数字数字字符字符逻辑数逻辑数无符号整数无符号整数定点数、浮点数、十进制数定点数、浮点数、十进制数ASCII逻辑运算逻辑运算二、数据在存储器中的存放方式二、数据在存储器中的存放方式字地址字地址 为为 低字节低字节 地址地址字地址字地址 为为 高字节高字节 地址地址37621540字地址字地址04低字节低字节04512673字地址字地址04低字节低字节存储器中的数据存放(存储字长为存储器中的数据存放(存储字长为 32 位)位)地址(十进制)地址(十进制)0 4 812162024283236双字双字双字(地址双字(地址32)双字双字双字(地址双字(地址24)半字(地址半字(地址20)半字(地址半字(地址22)半字(地址半字(地址16)半字(地址半字(地址18)字节(地址字节(地址 8)字节(地址字节(地址 9)字节(地址字节(地址10)字节(地址字节(地址11)字(地址字(地址 4)字(地址字(地址 0)字节(地址字节(地址14)字节(地址字节(地址15)字节(地址字节(地址13)字节(地址字节(地址12)边界对准边界对准地址(十进制)地址(十进制)048字节字节(地址地址7)字节字节(地址地址6)字字(地址地址2)半字半字(地址地址10)半字半字(地址地址8)半字半字(地址地址0)字字(地址地址4)边界未对准边界未对准 7.2三、操作类型三、操作类型1.数据传送数据传送源源目的目的寄存器寄存器寄存器寄存器寄存器寄存器寄存器寄存器存储器存储器存储器存储器存储器存储器存储器存储器置置“1”,清,清“0”2.算术逻辑操作算术逻辑操作加、减、乘、除、增加、减、乘、除、增 1、减、减 1、求补、浮点运算、十进制运算、求补、浮点运算、十进制运算与、或、非、异或、位操作、位测试、位清除、位求反与、或、非、异或、位操作、位测试、位清除、位求反如如 8086MOVESTORELOADMOVEPUSHPOP例如例如MOVEMOVE7.2ADD SUB MUL DIV INC DEC CMP NEG AAA AAS AAM AAD AND OR NOT XOR TEST3.移位操作移位操作算术移位算术移位4.转移转移(1)无条件转移无条件转移 JMP(2)条件转移条件转移结果为零转结果为零转 (Z=1)JZ结果溢出转结果溢出转 (O=1)JO结果有进位转(结果有进位转(C=1)JC跳过一条指令跳过一条指令 SKP循环移位(带进位和不带进位)循环移位(带进位和不带进位)如如300305306307SKP DZ D=0 则跳则跳逻辑移位逻辑移位完成触发器完成触发器7.2(3)调用和返回调用和返回CALL SUB1.CALL SUB2.CALL SUB2RETURNRETURN主程序主程序地址地址200021002101子程序子程序SUB1240025002501256025612700主存空间分配主存空间分配程序执行流程程序执行流程子程序子程序SUB27.2.IN AX,nOUT DX,ALOUT n,AXOUT DX,AX(4)陷阱(陷阱(Trap)与陷阱指令)与陷阱指令意外事故的中断意外事故的中断 设置供用户使用的陷阱指令设置供用户使用的陷阱指令如如 8086 INT TYPE 软中断软中断提供给用户使用的陷阱指令,完成系统调用提供给用户使用的陷阱指令,完成系统调用5.输入输出输入输出 一般不提供给用户直接使用一般不提供给用户直接使用 在出现事故时,由在出现事故时,由 CPU 自动产生并执行(隐指令)自动产生并执行(隐指令)IN AL,DXIN AX,DX入入 端口地址端口地址 CPU 的寄存器的寄存器出出 CPU 的寄存器的寄存器 端口地址端口地址7.2如如如如IN AL,nOUT n,AL7.3 寻寻 址址 方方 式式寻址方式寻址方式 确定确定 本条指令本条指令 的的 操作数地址操作数地址下一条下一条 欲执行欲执行 指令指令 的的 指令地址指令地址指令寻址指令寻址数据寻址数据寻址寻址方式寻址方式7.3 寻寻 址址 方方 式式一、指令寻址一、指令寻址顺序顺序(PC)+1 PC跳跃跳跃由转移指令指出由转移指令指出LDA 1000ADD 1001DEC 1200JMP 7LDA 2000SUB 2001INCSTA 2500LDA 1100.0123456789PC+1指令地址寻址方式指令地址寻址方式指令地址指令地址指令指令顺序寻址顺序寻址1顺序寻址顺序寻址2顺序寻址顺序寻址3跳跃寻址跳跃寻址7顺序寻址顺序寻址8二、数据寻址二、数据寻址 形式地址形式地址 指令字中的地址指令字中的地址 有效地址有效地址 操作数的真实地址操作数的真实地址 约定约定 指令字长指令字长=存储字长存储字长=机器字长机器字长1.立即寻址立即寻址 指令执行阶段不访存指令执行阶段不访存 A 的位数限制了立即数的范围的位数限制了立即数的范围形式地址形式地址 A操作码操作码寻址特征寻址特征OP#A立即寻址特征立即寻址特征立即数立即数 可正可负可正可负 补码补码形式地址形式地址 A 就是操作数就是操作数7.32.直接寻址直接寻址EA=A操作数操作数主存主存寻址特征寻址特征LDAAAACC 执行阶段访问一次存储器执行阶段访问一次存储器 A 的位数决定了该指令操作数的寻址范围的位数决定了该指令操作数的寻址范围 操作数的地址不易修改(必须修改操作数的地址不易修改(必须修改A)有效地址由形式地址直接给出有效地址由形式地址直接给出7.33.隐含寻址隐含寻址操作数地址隐含在操作码中操作数地址隐含在操作码中ADDA操作数操作数主存主存寻址特征寻址特征AACC暂存暂存ALU另一个操作数另一个操作数隐含在隐含在 ACC 中中如如 8086MUL 指令指令被乘数隐含在被乘数隐含在 AX(16位)或位)或 AL(8位)中位)中MOVS 指令指令源操作数的地址隐含在源操作数的地址隐含在 SI 中中目的操作数的地址隐含在目的操作数的地址隐含在 DI 中中 指令字中少了一个地址字段,可缩短指令字长指令字中少了一个地址字段,可缩短指令字长7.34.间接寻址间接寻址EA=(A)有效地址由形式地址间接提供有效地址由形式地址间接提供OPA寻址特征寻址特征AEA主存主存EAA1EA A1主存主存 EA10 执行指令阶段执行指令阶段 2 次访存次访存 可扩大寻址范围可扩大寻址范围 便于编制程序便于编制程序OPA寻址特征寻址特征A一次间址一次间址多次间址多次间址操作数操作数操作数操作数多次访存多次访存7.3 子程序子程序主程序主程序8081201202调用子程序调用子程序调用子程序调用子程序间接寻址编程举例间接寻址编程举例(A)=81(A)=202 间址特征间址特征7.3JMP A 5.寄存器寻址寄存器寻址EA=Ri 执行阶段不访存,只访问寄存器,执行速度快执行阶段不访存,只访问寄存器,执行速度快OPRi寻址特征寻址特征 寄存器个数有限,可缩短指令字长寄存器个数有限,可缩短指令字长操作数操作数R0RiRn寄存器寄存器有效地址即为寄存器编号有效地址即为寄存器编号7.3EA=(Ri)6.寄存器间接寻址寄存器间接寻址 有效地址在寄存器中,有效地址在寄存器中,操作数在存储器中,执行阶段访存操作数在存储器中,执行阶段访存操作数操作数主存主存OPRi寻址特征寻址特征 便于编制循环程序便于编制循环程序地址地址R0RiRn寄存器寄存器有效地址在寄存器中有效地址在寄存器中7.37.基址寻址基址寻址(1)采用专用寄存器作基址寄存器采用专用寄存器作基址寄存器EA=(BR)+ABR 为基址寄存器为基址寄存器OPA操作数操作数主存主存寻址特征寻址特征ALUBR 可扩大寻址范围可扩大寻址范围 有利于多道程序有利于多道程序 BR 内容由操作系统或管理程序确定内容由操作系统或管理程序确定 在程序的执行过程中在程序的执行过程中 BR 内容不变,形式地址内容不变,形式地址 A 可变可变7.3(2)采用通用寄存器作基址寄存器采用通用寄存器作基址寄存器操作数操作数主存主存寻址特征寻址特征ALUOPR0AR0 作基址寄存器作基址寄存器 由用户指定哪个通用寄存器作为基址寄存器由用户指定哪个通用寄存器作为基址寄存器通用寄存器通用寄存器R0Rn-1R1 基址寄存器的内容由操作系统确定基址寄存器的内容由操作系统确定 在程序的执行过程中在程序的执行过程中 R0 内容不变,形式地址内容不变,形式地址 A 可变可变7.38.变址寻址变址寻址EA=(IX)+AOPA操作数操作数主存主存寻址特征寻址特征ALUIX 可扩大寻址范围可扩大寻址范围 便于处理数组问题便于处理数组问题 IX 的内容由用户给定的内容由用户给定 IX 为变址寄存器(专用)为变址寄存器(专用)在程序的执行过程中在程序的执行过程中 IX 内容可变,形式地址内容可变,形式地址 A 不变不变通用寄存器也可以作为变址寄存器通用寄存器也可以作为变址寄存器7.3例例 设数据块首地址为设数据块首地址为 D,求,求 N 个数的平均值个数的平均值直接寻址直接寻址变址寻址变址寻址LDA DADD D+1ADD D+2ADD D+(N-1)DIV#NSTA ANSLDA#0LDX#0INXCPX#NBNE MDIV#NSTA ANS共共 N+2 条指令条指令共共 8 条指令条指令ADD X,DMX 为变址寄存器为变址寄存器D 为形式地址为形式地址(X)和和#N 比较比较(X)+1 X结果不为零则转结果不为零则转 7.39.相对寻址相对寻址 EA=(PC)+AA 是相对于当前指令的位移量(可正可负,补码)是相对于当前指令的位移量(可正可负,补码)A 的位数决定操作数的寻址范围的位数决定操作数的寻址范围 程序浮动程序浮动 广泛用于转移指令广泛用于转移指令操作数操作数寻址特征寻址特征ALUOPA相对距离相对距离 A1000PC 主存主存1000AOP7.3(1)相对寻址举例相对寻址举例M 随程序所在存储空间的位置不同而不同随程序所在存储空间的位置不同而不同EA=(M+3)3=M 3*LDA#0LDX#0ADD X,DINXCPX#NBNE MDIV#NSTA ANSMM+1M+2M+3而指令而指令 BNE 与与 指令指令 ADD X,D 相对位移量不变相对位移量不变 3*指令指令 BNE操作数的有效地址为操作数的有效地址为 3*相对寻址特征相对寻址特征*7.3(2)按字节寻址的相对寻址举例按字节寻址的相对寻址举例OP位移量位移量2000 H2008 H8JMP*+8OP06 H2000 H2008 H8设设 当前指令地址当前指令地址 PC=2000H转移后的目的地址为转移后的目的地址为 2008H因为因为 取出取出 JMP*+8 后后 PC=2002H二字节指令二字节指令故故 JMP*+8 指令指令 的第二字节为的第二字节为 2008H-2002H=06H7.310.堆栈寻址堆栈寻址(1)堆栈的特点堆栈的特点堆栈堆栈硬堆栈硬堆栈软堆栈软堆栈多个寄存器多个寄存器指定的存储空间指定的存储空间先进后出先进后出(一个入出口)(一个入出口)栈顶地址栈顶地址 由由 SP 指出指出 11FFFH+12000 H进栈进栈 (SP)1 SP出栈出栈 (SP)+1 SP栈顶栈顶栈底栈底2000 HSP2000 H1FFF HSP1FFFH栈顶栈顶栈底栈底进栈进栈出栈出栈 1FFF H栈顶栈顶 2000 H栈顶栈顶7.3(2)堆栈寻址举例堆栈寻址举例15200HACCSPX栈顶栈顶200H栈底栈底主存主存151FFHACCSP15栈顶栈顶200H栈底栈底主存主存X1FFHPUSH A 前前PUSH A 后后POP A 前前POP A 后后Y1FFHACCSPX栈顶栈顶200H栈底栈底主存主存151FFH15200HACCSP栈顶栈顶200H栈底栈底主存主存X157.3(3)SP 的修改与主存编址方法有关的修改与主存编址方法有关 按按 字字 编址编址进栈进栈出栈出栈(SP)1 SP(SP)+1 SP 按按 字节字节 编址编址存储字长存储字长 16 位位进栈进栈出栈出栈(SP)2 SP(SP)+2 SP存储字长存储字长 32 位位进栈进栈出栈出栈(SP)4 SP(SP)+4 SP7.3例 题l某机字长16位,存储器直接寻址空间为128字,变址时的位移量为-64+63,16个通用寄存器均可作为变址寄存器。设计一套指令系统格式,满足下列寻址类型的要求。(1)直接寻址的二地址指令3条;(2)变址寻址的一地址指令6条;(3)寄存器寻址的二地址指令8条;(4)直接寻址的一地址指令12条;(5)零地址指令32条。问:还有多少种代码未用?若安排寄存器寻址的一地址指令,还能容纳多少条?l设某机配有基址寄存器和变址寄存器,采用一地址格式的指令系统,允许直接和间接寻址,且指令字长、机器字长和存储字长均为16位。(1)若采用单字长指令,共能完成105种操作,则指令可直接寻址的范围是多少?一次间接寻址的寻址范围是多少?画出其指令格式并说明各字段的含义。(2)若存储字长不变,可采用什么方法直接访问容量为16MB的主存?l某模型机共有64种操作,操作码位数固定,存储字长为16位,且具有以下特点。(1)采用一地址或二地址格式;(2)有寄存器寻址、直接寻址和相对寻址(位移量为-128+127)三种寻址方式;(3)取数/存数指令在通用寄存器和存储器之间传送数据;(5)存储容量为1MB,按字节变址。要求设计算逻指令、取数/存数指令和相对转移指令的格式,并简述理由。l设某机共能完成110种操作,CPU 有8个通用寄存器(16位),主存容量为4M字,采用寄存器存储器型指令。(1)欲使指令可直接访问主存的任一地址,指令字长应取多少位?画出指令格式;(2)若在上述设计的指令字长中设置一寻址特征位X,且X=1表示某个寄存器做基址寄存器,画出指令格式。试问基址寻址可否访问主存的任一单元?为什么?如果不能,提出一种方法,使其可访问主存的任一位置;(3)若主存容量扩大到4G字,且存储字长等于指令字长,则在不改变上述硬件结构的前提下,可采用什么方法使指令可访问存储器的任一位置?本章小结l什么是指令?l操作码及其扩展、操作类型l地址码、操作数类型及存储方式l指令寻址方式l数据寻址方式:直接寻址、间接寻址、偏移量寻址/寄存器寻址、存储器寻址数据操作指令个人观点供参考,欢迎讨论!
展开阅读全文