指令系统——指令格式

一、指令系统的发展
1、引
(1)、冯氏结构
①、存储程序
②、程序控制
(2)、计算机指令是由一系列机器指令组成的
①、指令是计算机执行某种操作的命令
②、每个指令的执行过程靠硬件实现
(3)、指令是软件和硬件的分界面
①、硬件人员采用各种手段实现它
②、软件设计人员则利用它编制系统软件和应用软件
2、指令系统
(1)、指令系统是一台计算机中所有机器指令的集合
①、它是表征一台计算机性能的重要因素
②、影响计算机的硬件结构、软件系统,机器的适用范围
(2)、计算机指令系统的发展经历了从简单到复杂的演变过程
3、系列计算机
(1)、指基本指令系统相同、基本体系结构相同的一系列计算机
(2)、同一系列的各机种有共同的指令集
(3)、指令集向下兼容
(4)、解决软件兼容的问题
(5)、MIPS系列、ARM系列、x86系列
4、复杂指令系统计算机CISC
(1)、单条指令功能简单,整个指令系统数量庞大
(2)、使计算机研制开发周期变长,正确性难以保证,调试维护困难,而且大量使用频率很低的复杂指令造成了硬件资源的浪费
5、精简指令系统计算机RISC出现原因
①、2/8规则
②、为了降低控制器设计难度

二、指令格式
1、指令
(1)、指令字:表示一条指令的二进制串,简称指令
(2)、指令内容
①、做什么操作
②、如果需要操作数,从哪里取
③、结果送往哪里
④、下一条指令从哪里取
2、指令格式:
在这里插入图片描述
(1)、操作码
操作码指出指令进行什么操作,操作码字段的位数决定了计算机指令系统的规模
(2)、地址码
用来描述指令的操作对象
①、三地址指令:指令中包括两个操作数地址码和一个结果地址码,操作结束后,原操作数不改变
在这里插入图片描述
②、二地址指令:指令中包括两个操作数的地址码,运算结果保存到一个操作数的地址码中,并覆盖原数据
在这里插入图片描述
③、一地址指令:这种指令可能是单操作数运算,如"+1",操作结果保存到原操作数地址中,
也可能是二元运算,另一个操作数是隐含的
④、零地址指令:可能无需操作数,如空操作指令、停机指令
也可能操作数是默认的(隐含的)
(3)、操作数位置类型
①、SS
从内存某单元取数,结果存放至内存另一单元,需要多次访问内存
②、RR
从寄存器取数,结果存放至另一寄存器。不需要访问内存,速度快
③、RS
既要访问内存,又要访问寄存器
(4)、指令字长度
一个指令包含二进制的位数,与机器字长有关,分为单字长、半字长、双字长
①、多字长指令
一条指令长度不固定,取指时多次访存,降低了速度,存储空间大
②、分类
根据ISA中所有指令长度是否相等:
等长指令:所有指令长度相等,结构简单,控制线路简单
变长指令:指令字长度随功能而异,结构灵活,控制较复杂
(5)、指令助记符
操作码用二进制表示,为了方便,用几个字母表示一条指令,这种缩写码叫做指令助记符
(6)、操作数类型
地址数据、数值数据、字符数据、逻辑数据

三、寻址方式
引:
存储器既存放指令,也存放数据,操作数或指令字写入或读出的方式有:
地址指定方式、相联存储方式、堆栈存取方式
几乎所有计算机在内存中都采用地址指定方式,当采用地址指定方式时,形成操作数或指令地址的方式称为寻址方式
1、指令寻址方式
(1)、顺序寻址方式
①、指令地址在内存中按序排放,执行程序时,通常是一条指令接一条指令的顺序执行,这种执行方式称为指令的顺序寻址方式
②、必须使用程序计数器PC来计数指令的顺序号,该顺序号就是指令在内存中的地址
(2)、跳跃寻址方式
当程序转移执行的顺序时,指令的寻址就采用跳跃寻址方式,所谓跳跃,就是下条指令的地址码不是由PC给出,而是直接由本条指令给出
①、可以实现程序转移或构成循环程序,从而能缩短程序的长度
②、将某些程序作为公共程序引用
③、指令系统中的各种条件转移或无条件转移指令,就是为了实现指令的跳跃寻址而设置的
2、操作数寻址方式
(1)、目的:为了形成操作数的有效地址
(2)、指令中地址码由形式地址(偏移量)和寻址方式特征位等组合而成
如一种单地址指令:
在这里插入图片描述
(3)、操作数存放位置
①、操作数包含在指令中
②、操作数包含在CPU某一个内部寄存器中
③、操作数包含在主存储器中
④、操作数包含在I/O设备的端口中
(4)、操作数基本寻址方式
①、隐含寻址
指令不明显给出而是隐含操作数的地址,如单地址的指令格式,没有在地址字段中指明第二操作数地址,而是规定累加寄存器AC作为 第二操作数地址,AC对于单地址指令格式来说是隐含地址
②、立即寻址
指令的地址字段指出的不是操作数的地址,而是操作数本身
特点:
操作码和操作数被同时取出,提高了指令的执行速度
操作数是指令的一部分,不能被修改
操作数的大小受到指令字长的限制,寻址方式灵活性差
③、直接寻址
在指令的地址字段中给出操作数在内存的地址A
EA=A
④、间接寻址
操作数的有效地址在主存储器中,从而使得间接寻址要比直接寻址灵活得多
至少需要两次访问主存储器才能取出操作数
EA=(A)
⑤、寄存器寻址
操作数不在存储器中,而是在CPU内某一通用寄存器中,在指令的地址码部分给出CPU内某一通用寄存器的编号
优点:指令在执行时从寄存器中取操作数比访问主存要快得多
EA=R
⑥、寄存器间接寻址
寄存器中存放的不是操作数,而是操作数的存储器地址,在指令的地址码部分给出通用寄存器的编号
EA=®
⑦、偏移寻址
偏移寻址是直接寻址和寄存器间接寻址方式的结合,要求指令中有两个地址段,一个地址段中的形式地址A直接被使用,另一个地址段指某个专用寄存器(一般是隐含的)
EA=A+®
常用三种偏移寻址:
相对寻址:隐含的专用寄存器是程序计数器PC
EA=A+(PC)
地址是相对当前指令地址而言的,形式地址A可正可负,是一种指令寻址方式
基址寻址:隐含的专用寄存器是基址寄存器
形式地址A通常是一个偏移量,通常是无符号整数
优点:可以扩大寻址能力,同形式地址相比,基址寄存器的位数可以设置的很长,从而可以在较大的存储空间中寻址
变址寻址:隐含的专用寄存器是变址寄存器
目的:实现程序块的规律性变化
如:有一个字符串存储在以X为首地址的连续主存单元中,只需要将首地址X作为指令中的形式地址A,而在变址寄存器中指出字符的 序号,便可以访问字符串的任一字符
⑧、段寻址
在Intel 8086/8088微机中,ALU16位运算,但其内存容量可到1M,地址有20位。将整个1M空间存储器以64k为单位划分成若干段,在形成20位物理地址时,段寄存器中的16位数会自动左移4位,然后与16位偏移量相加
⑨、堆栈寻址
堆栈分为寄存器堆栈和存储器堆栈,都需要一个隐式或显式的堆栈寄存器来指明栈顶的地址

四、典型指令
1、指令分类
一个较完善的指令系统应当包括以下几类指令:
①、数据处理
②、数据存储
③、数据传送
④、程序控制
(1)、数据传送指令
主要用来实现主存和寄存器之间、寄存器和寄存器之间的数据传送
①、一般传送指令:MOV
②、数据交换指令:XCHG
③、堆栈操作指令:PUSH、POP
(2)、算术运算指令
用于定点或浮点算术运算
ADD、ADC、INC、SUB、DEC、IMUL、IDIV、CMP
(3)、逻辑运算指令
包括逻辑运算和移位等指令
NOT、AND、OR、XOR、TEST
(4)、程序控制指令
用于控制程序的执行方向,并使程序具有测试、分析与判断的能力
①、无条件转移:JMP
②、条件转移:JC、JZ、JN、JP、JV
③、转子程序:CALL
④、子程序返回:RET
⑤、中断返回:IRET
(5)、输入输出指令
实现外部设备和CPU之间、外围设备与外围设备之间的信息传送,不是所有机器都有输入输出指令
IN AX,n
OUT n,AX
(6)、字符串处理指令
可对大量字符串进行处理,包括字符串传送、转换、替换等
(7)、特权指令
具有特殊权限的指令。这类指令只用于操作系统或其他系统软件,一般不直接提供给用户使用。在多用户、多任务的计算机系统中必不可少。主要用于系统资源的分配和管理
(8)、其他指令
状态寄存器置位/复位指令、测试指令、暂停指令、空操作指令

五、RISC特点
①、选取使用频率最高的一些简单指令,指令条数少
②、指令长度固定,指令格式简单,大部分运算指令为三地址指令
③、只有存数/取数指令可以访问存储器,其余指令操作都在寄存器之间进行
④、简单的寻址方式
⑤、设置大量寄存器
⑥、每一个机器周期完成一条机器指令

你可能感兴趣的:(计算机组成)