指令
指令的定义
指令又称为机器指令,是指计算机执行某种操作的命令,是计算机运行的最小功能单位,一台计算机的所有指令的集合构成的指令系统,又称为指令集
一台计算机只能够执行自己指令系统中的指令,不能够执行其他系统的指令
指令的分类
- 微指令:属于硬件,微程序级别的命令
- 宏指令:若干条机器指令组成的软件指令,属于软件
- 机器指令:介于宏指令和伪指令之间
一条指令可以完成一个独立的算数运算或者逻辑运算
性能要求
- 完备性:指令系统提供的指令够用,不用依赖软件实现,完备性要求指令系统丰富、功能齐全、使用方便
- 有效性:指令系统编写的指令系统所编写的程序能够高效率的运行,高效性表现在程序的占据内存的存储空间小、执行速度快
- 规整性:指令系统的对称性、匀齐性、指令格式和数据格式的一致性
- 兼容性:各种机种之间具有相同结构基本结构和共同的基本指令集,使得各机种上的软件可以统用
低级语言和硬件结构的关系
低级语言依赖于计算机的硬件结构和指令系统
低级语言的问题:依赖于机器、编写程序困难、编制所需时间较长、
低级语言的优点:执行时间短、编译过程中对计算机资源的需求较低
指令格式
指令字:表示一条指令的机器数
指令结构:操作码字段OP+地址码字段A
操作码:说明计算机执行哪种操作,是指令中不可缺少的组成部分
操作码字段的位数取决于计算机指令系统的规模
一般来说,一个n位操作码最多对应
2
n
2^n
2n个指令
操作数:各种操作的对象,通常操作指令均有一个或者两个的操作数
指令格式
- IN,AX,端口地址
- OUT,端口地址,AX
地址码
分类:
- 三级地址指令:有三个指定的通用寄存器的地址
- 二级地址指令:有两个参与操作数的内存的地址放在寄存器中
- 一级地址指令:指定一个操作数,另外一个操作数地址是隐含的
- 零地址指令:只有操作码
格式:
- 三级地址指令:OP+A1+A2+A3,将运算结果保存在A3
- 二级地址指令:OP+A1+A2,将运算结果保存在A1
- SS:存储器——存储器,速度最慢
- RS:存储器——寄存器
- RR:寄存器——寄存器,速度最快
- 一级地址指令:OP+A1,结果存储在A1中
- 0级地址指令:OP,空操作
基本概念
指令字长度:一个指令字中包含的二进制的位数
机器字长:计算机能够直接处理的二进制数据的位数,决定了计算机运算精度
单字长指令=机器字长的指令
半字长指令=半个机器字长的指令
双字长指令
多字长指令的优缺点
多字长指令
优点
提供足够的地址来解决访问内存单元的寻址问题
缺点
必须多次访问内存来取出一整条指令,降低了CPU的运算速度,占用了更多的存储空间
等字长
优点
各种指令字的长度是相同的,指令字简单且字长度不变
非等字长
优点
结构灵活,能够充分利用指令长度,但是指令的控制较为复杂
指令助记符
每个指令通常用三个或者四个英文字母的缩写表示
对各种指令的使用格式进行了解
典型指令 | 指令助记符 | 二级制操作码 |
---|---|---|
加法 | ADD | 001 |
减法 | SUB | 010 |
传送 | MOV | 011 |
跳转 | JMP | 100 |
转子 | JSR | 101 |
操作数的类型
- 一般数据类型
- 地址数据:无符号整数
- 数值数据:定点整数、浮点数
- 字符数据:文本数据或者字符串
- 逻辑数据:一个单元由若干个二进制位项组成
- Pentium数据类型
- Power PC数据类型
指令和数据的寻址方式
寻址的时机:
- 冯诺·依曼型:指令寻址和数据寻址是交替进行的
- 哈弗型:指令寻址和数据寻址是独立进行的
操作数或者指令字写入或者读出的方式
- 地址指定
- 相联存放
- 堆栈存取
寻址方式:当采用地址指定的方式的时候,形成操作数和指令地址的方式
寻址方式:
- 指令寻址,较简单
- 数据寻址,较复杂
指令的寻址方式
- 顺序寻址方式
- 跳跃寻址方式
操作数的来源:
- 指令中的地址码部分直接给出操作数
- 操作数存放在CPU的通用寄存器中
- 内存的数据区域
- 有效地址:指令中直接给出操作数的实际访存地址
- 形式地址:在地址字段中给出
操作数的位置
9种操作数寻址的方式
寄存器寻址:操作数存放在相应的寄存器中,优点:
立即寻址:数据就包含在指令中,特点:
余下的操作数均在内存当中
隐含寻址:指令中隐含着操作数的地址,特点:
直接寻址:操作数在存储器中的地址,特点:简单直观、便于硬件实现
间接寻址:操作数存放在间接地址所指向的有效地址中所指向的地址中,感觉和二级指针比较像
寄存器间接寻址:操作数存放在主存储器中,操作数地址放在的某一个寄存器中
偏移寻址:两者相加后为操作数的有效地址
- 相对寻址
- 基址寻址
- 变址寻址
方式 | 算法 | 优点 | 操作数的位置 | 缺点 |
---|---|---|---|---|
隐含寻址 | 无存储器访问 | 操作数在指定存储器内 | 数据范围有限 | |
立即寻址 | 操作数=A | 无存储器访问 | 操作数符有限 | |
直接寻址 | EA=A | 简单 | 地址范围有限 | |
间接寻址 | EA=(A) | 大的地址范围 | 多重存储器访问 | |
寄存器寻址 | EA=R | 无存储器访问 | 地址范围有限 | |
寄存器间接寻址 | EA=® | 大的地址范围 | 额外存储器访问 | |
偏移寻址 | EA=A+® | 灵活 | 复杂 | |
段寻址 | EA=A+® | 灵活 | 复杂 | |
堆栈寻址 | EA=栈顶 | 无需给出存储器地址 | 需要堆栈指示器 |
典型指令
指令的分类
-
数据传送指令
- 一般传送指令:MOV、AX、BX
- 数据交换指令
- 堆栈操作指令
-
运算类指令
- 算数运算指令
- 逻辑运算指令
- 移位指令
-
程序控制类指令:控制程序执行的方向
-
输入、输出指令、字符串处理指令、特权指令、其他指令
RISC指令系统
CISC指令系统的缺点:指令种类太多、指令格式不规范、寻址方式太多
RISC优化了CICS的缺点
Power PC机的5种指令