指令系统¶
概述¶
指令系统是计算机所能执行的全部指令的集合,是计算机硬件和软件的主要界面。
指令系统定义
指令系统(Instruction Set)是计算机所有指令的集合,反映了计算机的基本功能。
指令的格式¶
基本格式¶
指令基本格式
指令 = 操作码(OP) + 地址码(AD)
操作码¶
操作码(Operation Code)
指明指令要完成的操作。
编码方式:
- 固定长度: 所有指令操作码长度相同
- 可变长度: 不同指令操作码长度不同
地址码¶
地址码(Address Code)
指明操作数或操作数地址。
指令的分类¶
按地址码数量分类¶
按地址码数量分类
根据地址码的数量,指令可分为:
| 类型 | 格式 | 示例 | 说明 |
|---|---|---|---|
| 零地址 | OP | RET, NOP | 无操作数 |
| 一地址 | OP A1 | INC AX | 单操作数 |
| 二地址 | OP A1, A2 | MOV AX, BX | 双操作数 |
| 三地址 | OP A1, A2, A3 | ADD R1, R2, R3 | 三操作数 |
按功能分类¶
1. 数据传送指令¶
数据传送指令
在寄存器、存储器之间传送数据。
指令:
- MOV: 数据传送
- LOAD: 从存储器加载
- STORE: 存储到存储器
- PUSH: 压栈
- POP: 出栈
2. 算术运算指令¶
算术运算指令
执行算术运算。
指令:
- ADD: 加法
- SUB: 减法
- MUL: 乘法
- DIV: 除法
- INC: 加1
- DEC: 减1
3. 逻辑运算指令¶
逻辑运算指令
执行逻辑运算。
指令:
- AND: 逻辑与
- OR: 逻辑或
- NOT: 逻辑非
- XOR: 逻辑异或
4. 控制转移指令¶
控制转移指令
改变程序执行顺序。
指令:
- JMP: 无条件转移
- JZ: 零标志转移
- JNZ: 非零标志转移
- CALL: 调用子程序
- RET: 返回
寻址方式¶
寻址方式
寻址方式是指令获取操作数的方式。
1. 立即寻址¶
立即寻址
操作数直接包含在指令中。
示例: MOV AX, 100
特点:
- 速度快
- 操作数固定
- 适合常数
2. 直接寻址¶
直接寻址
指令中给出操作数的内存地址。
示例: MOV AX, [1000H]
特点:
- 直观
- 地址固定
- 适合访问固定地址
3. 寄存器寻址¶
寄存器寻址
操作数在寄存器中。
示例: MOV AX, BX
特点:
- 速度快
- 无需访问内存
- 适合频繁使用的数据
4. 寄存器间接寻址¶
寄存器间接寻址
寄存器中存放操作数的地址。
示例: MOV AX, [BX]
特点:
- 灵活
- 可修改地址
- 适合数组访问
5. 相对寻址¶
相对寻址
有效地址 = PC + 位移量。
示例: JMP +10
特点:
- 适合转移指令
- 位置无关代码
- 适合程序浮动
CISC与RISC¶
CISC与RISC
两种不同的指令系统设计思想。
CISC(复杂指令集计算机)¶
CISC特点
- 指令丰富
- 指令长度可变
- 寻址方式多样
- 硬件复杂
代表: x86架构
RISC(精简指令集计算机)¶
RISC特点
- 指令精简
- 指令长度固定
- 寻址方式简单
- 硬件简单
代表: ARM, MIPS, RISC-V