Day4:Part1——指令格式&指令的寻址方式 指令系统是表征计算机性能的重要因素,是计算机的主要属性,位于硬件和软件的交界面上。所谓指令,是指示计算机执行某种操作的命令。 1.指令的基本格式 通常包括操作码字段和地址码字段两部分。 操作码:指出指令中指令应该执行什么性质的操作以及具有何种功能,是识别指令,了解指令功能及区分操作数地址内容和使用方法等的关键信息。 地址码:给出被操作的信息的地址,包括参加运算的一个或多个操作数所在的地址、运算结果的保存地址、程序的转移地址、被调用的子程序的入口地址等。 指令的长度:一条指令中所包含的二进制代码的位数,取决于操作码的长度、操作数地址码的长度和操作数地址的个数。 单字长指令:指令长度等于机器字长 半字长指令:指令长度等于半个机器字长 双字长指令:指令长度等于两个机器字长 定长指令字结构:所有指令长度相等,执行速度快,结构简单 变长指令字结构:各种指令的长度随指令功能而异(但因为主存一般都是按字节编址的,所以指令字长为字节的整数倍) 1)零地址指令 OP 只给出操作码OP,没有显式地址。不需要操作数的指令,如空操作指令、停机指令、关中断指令零地址的运算类指令仅用于堆栈计算机中。通常参与运算的两个操作数隐含地从栈顶和次栈顶弹出,送到运算器进行运算,运算结果再隐含地压入堆栈。 2)一地址指令 OPA1 根据操作码的含义确定是两种形态中的哪一个。 1.只有目的操作数的单操作数指令,按照 A1 地址读取操作数,进行OP操作后,结果存回原地址。 指令含义:OP(A1)—->A1 如操作码含义是加1,减1,求反,求补等。 2.隐含约定目的地址的双操作数指令,按A1地址读取源操作数,指令可隐含约定另一操作数由ACC提供,运算结果也存放在ACC中。 指令含义:(ACC)OP(A1)——>ACC 若指令字长为32位,操作码占8位,1个地址码字段占24位,则指令操作数的直接寻址范围为
=16M 3)二地址指令 OPA1A2 指令含义:(A1)OP(A2)—–>A1 对于常用的算术和逻辑指令,往往要求使用两个操作数,需要分别给出目的操作数和源操作数的地址,其中目的操作数地址还用于保存本次的运算结果。 若指令字长为32位,操作码占8位,两个地址码字段各占12位,则指令操作数的寻址范围为4K。 4)三地址指令 OPA1A2A3(结果) 指令含义:(A1)OP(A2)——>A3 若指令字长为32位,操作码占8位,三个地址码字段各占8位,则指令操作数的寻址范围为256。 若地址字段均为主存地址,则完成一条三地址需要4次访问存储器(取指令1次,取两个操作数2次,存放结果1次)。 5)四地址指令 OPA1A2A3(结果)A4(下址) 指令含义:(A1)OP(A2)——>A3,A4=下一条将要执行指令的地址。 若指令字长为32位,操作码占8位,四个地址码字段各占6位,则指令操作数的寻址范围为64。 2.定长操作码指令的格式 在指令字的最高位部分分配固定的若干位(定长)表示操作码。 一般n位操作码字段的指令系统最大能表示2^n。 它对简化计算机硬件设计,提高指令译码和识别速度十分有利。 当字长为32位或更长时,这是常规用法。 3.扩展操作码指令的格式 为了在指令字长有限的前提下仍保持比较丰富的指令种类,可采取可变长度操作码,即全部指令的操作码字段的位数不固定,且分散地放在指令字的不同位置上。 将增加指令译码和分析的难度,使控制器的设计复杂化。 最常见的变长操作码方法是扩展操作码,它使操作码的长度随地址码的减少而增加,不同地址数的指令可具有不同长度的操作码,从而在满足需要的前提下,有效缩短指令字长。 注意:不允许短码是长码的前缀各指令的操作码一定不能重复 频率较高—–>短操作码 频率较低—–>长操作码 4.指令的操作类型(按功能分类) 1)数据传送 寄存器之间的传送(MOV)从内存单读取数据到CPU寄存器(LOAD)从CPU寄存器截数据到内存单(STORE) 2)算术和逻辑运算 四则运算比较 CMP加1 INC减1 DEC与(AND)或(OR)取反(NOT)异或(XOR) 3)移位运算 算法移位、逻辑移位、循环移位等。 4)转移操作 无条件转移(JMP)条件转移(BRANCH)调用(CALL)返回(RET)陷阱(TRAP) 调用指令和转移指令的区别:执行调用指令时必须保存下一条指令的地址(返回地址),当子程序执行结束时,根据返回地址返回到主程序继续执行;而转移指令则不返回执行。 5)输入输出操作 用于完成CPU与外部设备交换数据或传送控制命令及状态信息。 指令的寻址方式: 寻找指令或操作数有效地址的方式,即确定本条命令的数据地址(数据寻址)及下一条待执行指令的地址(指令寻址)的方法。 指令的地址码字段并不代表操作数的真实地址,而是形式地址,结合寻址方式可以计算出操作数在存储器中的真实地址(有效地址) 1.指令寻址和数据寻址 指令寻址:1)顺序寻址:通过PC加1(1个指令字长),自动形成下一条指令的地址。2)跳跃寻址:通过转移类指令实现。所谓跳跃是指下条指令的地址不由PC自动给出,而由本条指令给出下条指令地址的计算方式。跳跃可能受状态寄存器和操作数的控制,跳跃的地址分为绝对地址和相对地址,结果是当前指令修改PC值,所以下一条指令仍然通过PC给出数据寻址:如何在指令中表示一个操作数的地址,如何用这种表示得到操作数或者怎样计算出操作数的地址。 数据寻址的方式较多,为区分各种方式,通常在指令中设置一个字段,用来指明属于哪种寻址方式。OP寻址特征形式地址A 2.常见的数据寻址方式 1)隐含寻址 不明显地给出操作数的地址,而在指令中隐含操作数的地址。 优点:有利于缩短指令字长 缺点:需要增加存储操作数或隐含地址的硬件 2)立即(数)寻址 地址字段指出的不是操作数的地址,而是操作数本身,用补码表示。 优点:在执行阶段不访问主存,执行时间最短 缺点:A的位数限制了立即数的范围 3)直接寻址 形式地址是真实地址。 优点:简单,在执行阶段就访问一次主存 缺点:A的位数决定了该指令操作数的寻址范围,操作数的地址不易修改 4)间接寻址 相对于直接寻址而言的,形式地址是操作数有效地址所在存储单的地址(操作数的地址)。 优点:可扩大寻址范围(寄存器间接寻址更常用),便于编制程序 缺点:在执行阶段要多次访问内存,访问速度慢 5)寄存器寻址 指令字中直接给出操作数所在的寄存器编号,其操作数在编号所致的寄存器内。 优点:指令在执行阶段不访问主存,只访问寄存器,因寄存器数量少,对应地址码长度较小,使得指令字段且因不用访存,所以执行速度快,支持向量/矩阵运算 缺点:寄存器价格昂贵 6)寄存器间接寻址 在寄存器中给出的不是一个操作数,而是操作数所在主存单的地址 特点:比一般间接寻址快,但需要访问主存。 7)相对寻址 把PC的内容加上形式地址而形成操作数的有效地址(形式地址是相对于当前指令位置的位移量,用补码表示)。 优点:操作数的地址不是固定的,随PC值的变化而变化,且与指令地址之间总是相差一个固定值,因此便于程序浮动。 广泛应用于转移指令。 8)基址寻址 将CPU中基址寄存器(BR)的内容加上形式地址而形成操作数的有效地址。其中基址寄存器既可以采用专用寄存器,也可以采用通用寄存器。 优点:可扩大寻址范围(BR位数大于形式地址位数);用户不必考虑自己的程序存于主存的哪个空间区域,因此有利于多道程序设计,并可用于编制浮动程序,但偏移量(形式地址)的位数短。 9)变址寻址 有效地址等于指令中的形式地址A与变址寄存器IX的内容之和。与基址寻址相反,IX为偏移量,而A为不变量。 优点:可扩大寻址范围;有利于循环程序的编制。 10)堆栈寻址 堆栈是存储器(或专用存储器组)中一块特定的,按后进先出(LIFO)原则管理的存储区。该存储区中读/写单的地址是用一个特定的寄存器给出的,该寄存器称为堆栈指针(SP)。 分为硬堆栈和软堆栈。 硬堆栈:寄存器堆栈,成本较高,不适合做大容量的堆栈; 软堆栈:从主存中划出一段区域做堆栈是最合算且最常用的方法,称为软堆栈。 在采用堆栈结构的计算机系统中,大部分指令表面上都表现为无操作数指令的形式,因为操作数地址都隐含地使用了SP。通常情况下,在读/写堆栈中的一个单前后都伴有自动完成对SP内容的增量或减量操作。
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/28962.html