一、指令的基本概念
1)指令
含义:计算机能直接识别、执行的操作命令(机器指令)
是冯诺依曼结构计算机“程序控制”原理实现的载体
2)指令系统(指令集)
含义:一台计算机中所有机器指令的集合
系列机:同一公司不同时期生产,基本系统结构和指令系统相同的计算机。
兼容机:不同公司生产,基本系统结构和指令系统相同的计算机。
3)指令字长
含义:指令中包含的二进制位数
与机器字长相比:单字长、双字长、半字长等长度指令
-
多字长指令:
- 解决寻址较大存储空间的问题
- 取指会多次访问内存,影响速度,占用空间大
等长指令:指令字长度固定
变长指令:指令字长度根据需要可变
二、指令的分类
1)根据计算机层次结构分类
属于指令集架构层(机器语言指令)
2)根据指令中地址码字段的个数分类
三、二、一、零地址指令
3)根据指令中操作数的物理位置分类
存储器--存储器 (SS)型(这种形式现在已经淘汰,因为两次都要访问主存,太慢)
寄存器--寄存器 (RR)型
寄存器---存储器(RS)型
4)根据指令的功能分类
传送指令:MOV、PUSH/POP、IN/OUT等
顶点算术运算指令:ADD、SUB、INC、CMP、MUL等
位运算指令:NOT、AND、OR、SHL、SAL
控制转移指令:JMP、JNE、CALL、RET等
三、指令格式
操作码+数据源+寻址方式
用二进制代码表示指令的结构形式:
指令要求计算机完成什么功能?---》设置操作码
指令要求计算机处理什么数据?----》设置数据源/目
计算机怎样得到要处理的数据?----》设置寻址方式
操作码字段的位数与支持的最大指令数量有关
对于定长操作码而言,LengthOP=log2n(向上取整)
支持边长操作码时,操作码向不用的地址码字段扩展
寻址方式字段的位数与支持的寻址方式种类有关
地址码字段的作用及影响与其位数和寻址方式有关
四、指令认识
计算机能直接识别、执行的某种操作命令(机器指令)是指挥计算机指令特定操作的命令
冯诺依曼结构计算机“程序控制”原理实现的载体
是软、硬件界面和程序员操作计算机硬件的接口
是硬件设计的依据和软件设计的基础,直接影响计算机系统的性能
五、寻址方式
1)、寻址方式的概念
根据冯诺依曼计算机的工作原理,需要根据物理地址从内存中去取指令和数据。包括指令寻址方式和数据的寻址方式
2)、指令的寻址方式
含义:计算指令有效地址的方法
指令的寻址方式只有两种:
顺序寻址
跳跃寻址
顺序寻址
程序的指令序列在主存顺序存放。执行时从第一条指令开始,逐条取出并执行,这种程序的顺序执行过程,称为顺序寻址方式
-
cpu中设置程序计数器(PC)对指令的顺序号进行计算。PC开始时存放程序的首地址,每执行一条指令,PC加1,指出下条指令的地址,直到程序结束
- 加1的含义:存储1条指令占用的字节单元数与存储字长有关
跳跃寻址
- 当程序要转移执行的顺序时,指令的寻址就采取跳跃寻址方式
- 跳跃,又称跳转,是指下条指令的地址码不是由程序计数器给出,而是由本条指令给出
- 注意!程序跳跃后,按新的指令地址开始顺序执行;指令计数器的内容也必须相应改变,以便及时跟踪新的指令地址
3)操作数寻址方式
含义:形成操作数有效地址的方法
- 立即数寻址:地址码字段是操作数本身 MOV AX, 200H
- 寄存器寻址:地址码字段是寄存器地址 MOV AX, BX
- 直接寻址:地址码字段是内存地址 MOV AX, [200H]
- 间接寻址:地址码字段是内存地址的地址 MOV AX, I[200H]
- 寄存器间接寻址:地址码字段是存内存地址的寄存器地址 MOV AX, [BX]
- 相对寻址:操作数地址 + 当前PC的值
- 基址寻址:操作数地址 + 基址寄存器的值(一段程序中不变) MOV AX, 32[B]
- 变址寻址:操作数地址 + 变址寄存器的值(随程序不断变化) MOV AX, 32[SI]
1、立即数寻址
地址码字段是操作数本身
例:MOV AX,200H(AX<---200H)
S=D
特点:
取指操作将数据与指令一并读入CPU内部的寄存器,指令执行速度块
便于程序设计(变量赋初值)
数据大小受字段位数限制
2、寄存器寻址
操作数在cpu的内部寄存器中
例 MOV AX,BX(AX<---(BX) )
特点:
操作数在寄存器中,指令执行速度快
能访问的数据大小一般与计算机字长有关
地址字段的位数与计算机通用寄存器数量相关
3、直接寻址
地址码字段直接给出操作数在内存的地址,
例 MOV AX,[200H]
特点:
提供访问主存的操作
获得数据要访问主存,指令执行速度慢
地址字段的位数决定了访存空间大小
4、间接寻址
地址码字段给出的是操作数主存地址的地址
例 MOV AX,I[200H]
特点:
解决了直接寻址方式下地址字段的位数限制访存范围大小的问题
获得数据要访问主存2次,指令执行速度太慢
5、寄存器间接寻址
地址码给出的是寄存器编码R
特点:
解决了直接寻址方式下地址字段的位数限制访存范围大小的问题
获得数据只需访问主存1次
6、相对寻址
操作数地址 + 当前PC的值
指令所提供的相对地址是:本条指令的下条指令在内存中的首地址为基准位置的偏移量
特点:
可节省指令中的地址位数,便于程序在内存中成块移动
注意PC的改变对计算E的影响,计算机字长十六位则加2(16 / 8)
若计算机字长32位,且PC的值在取值阶段修改,则读完地址后,PC要加4,因为32位占了四个字节
7、基址寻址
指定一个基址寄存器B,与本指令地址无关
E=D+(B),D为指令中地址字段的值
例:MOV AX,32[B]
特点:
使用基址寄存器可以访问更大的主存空间(基址寄存器可以设置成比通用寄存器还大的位数)
对某一程序而言,基址值设定后不变,故要访问不同数据需修改D
8、变址寻址
指定一个变址寄存器X,与本指令地址无关,内容可随便要求改变
E=D+(X),D为指令中地址字段的值
MOV AX,32[SI] SI,DI都称为变址寄存器
特点:
不改变指令即可改变数据的有效地址,可在循环中使用
在字符串处理,向量运算等等成批数据处理中非常有用
9、数据寻址方式总结
数据寻址方式 | 地址表达式E | 特点 |
---|---|---|
立即寻址 | S=D | 快,便于程序设计,赋初值,初值大小受限 |
寄存器寻址 | S=R | 快,便于程序设计,不能访问主存 |
直接寻址 | E=D | 慢,便于程序设计,提供访存,范围受限 |
间接寻址 | E=(D) | 很慢,解决直接寻址访存范围受限的问题 |
寄存器间接 | E=(R) | 慢,便于程序设计,提供访存,范围增大 |
相对寻址 | E=(PC)+D | 慢,提供访存,不能在循环中使用 |
变址寻址 | E=(X)+D | 慢,便于程序设计,提供访存,可在循环中用 |
基址寻址 | E=(B)+D | 慢,提供更大的范围的访存能力,不能在循环中用 |
六、指令格式设计
1、指令格式设计的主要内容
操作码字段+寻址方式+地址码字段
根据指令数量的要求及是否支持操作码扩展,确定操作码字段的位数
根据对操作数的要求确定地址码字段的个数
根据寻址方式的要求,为每个地址码字段确定寻址方式字段位数。
确定采用定长指令还是变长指令
例子:指令格式设计
七、MIPS
三种指令格式
- R型指令
- I型指令
- J型指令