3.2指令系统
指令的定义
指令就是计算机执行某种操作的命令,以二进制代码形式存放
从计算机组成的层次结构看,有不同的指令概念
- 微指令-- 微程序级的命令,属于硬件
- 宏指令-- 若干条机器指令组成的命令,属于软件
- 机器指令 – 通常所说的指令,可以控制计算机执行某种操作
指令系统,也叫指令集,是计算机能执行的全部指令的集合,大致分为CISC与RISC
指令集部分了解即可,重点在后面
指令格式
操作码OP 地址码A (操作数OD)
操作码OP
操作码 – 指令中使用若干位来表明操作类型的编码
操作码是区别不同类别指令的主要依据!!!操作码长度n位,指令数量为2的n次方
地址码
地址码蕴含了参与指令操作数据的相关信息
注意:
数据可能是源操作数、运算结果,以及后继指令信息
少数情况下,直接给出数据本身;多数情况下,指明数据存放的地址,如寄存器编号、存储单元的地址
一条指令可能包含多个地址码,即有多个操作数
地址码结构
有分为显地址和隐地址
主要还是三地址指令、二地址指令、一地址指令和零地址指令,具体看下图
补充:
固定长度操作码和可变长度操作码
重点可变长度操作码(扩展操作码)
地址码部分多,减少操作码位数;地址码部分少,增加操作码位数
指令的字长结构
主要是变字长指令,看图即可
例题
寻址方式
采用地址指定方式时,形成操作数或指令地址的方式,称为寻址方式
根据寻址目标,可分为指令寻址和数据寻址
最基本的四类寻址方式
- 立即寻址类
- 直接寻址类
- 间接寻址类
- 变化寻址类
直接寻址
直接寻址没什么好说的,就基本是直接找,看图就行
需要特别注意:
寄存器直接寻址!!
当操作数不在内存中,而是放在通用寄存器中时,就可以采用这一种寻址方式了。
这时,指令中给出的操作数地址是通用寄存器的编号!!!注意是寄存器的编号!!!寄存器里放的才是操作数
间接寻址
主存间接寻址
指令指向的地址是形式地址,形式地址指向的是数据真的地址
类似指针!
寄存器间接寻址
指令也是存寄存器编号
与寄存器直接寻址区别: 寄存器里的内容是操作数的地址,而不是操作数
变化类寻址
变化寻址是重点!!!
分为 变址寻址,基址寻址和相对寻址
基址寻址和变址寻址的对比
相同点
基址寻址 = Rn + A
变址寻址 = Rn + A
Rn都为为寄存器地址,A形式地址
不同点
- 基址寻址Rn为基准,A为偏移量
- 变址寻址A为基准,Rn为偏移量
基准是偏移的基准,是不变的,理解记忆
相对寻址
PC + A,具体看图
程序的局部性原理
简单来说,操作系统分给这个程序多少,最多就用多少,别的地方用不了
例题
重点例题!!!!
表格Ms表示源操作数的寻址方式
Md表示目的操作数的寻址方式
MDR的位数一般与总线宽度相同,按字编址,16位,所以MDR为16
感谢吞凡草大佬的补充!