机器指令
指令的一般格式
指令由两个部分组成:
- 操作码字段
- 地址码字段
操作码
前者反映机器做什么操作。其长度可固定,也可变化。
- 长度固定:大中型计算机
- 长度不固定:微型机
扩展操作码技术
操作码的位数随地址数的减少而增加。
地址码
地址码用来指出操作数的地址,包括
- 源操作数的地址
- 结果目的操作数的地址
- 下一条指令的地址
按照操作数地址的数目可以分为:
- 四地址指令
- 三地址指令
- 二地址指令
- 一地址指令
- 零地址指令
下面分别介绍不同类型的地址指令:
四地址指令
OP | A1 | A2 | A3 | A4 |
---|---|---|---|---|
OP是操作码,A1为第一操作数地址,A2为第二操作数地址,A3为结果数地址,A4为下一条指令地址。
需要访问存储器4次:取操作码,取操作数两次,存放结果
三地址指令
由于PC可以记录下一条指令的地址,故在四地址指令基础上可以省略A4,得到三地址指令。
仍然需要访问存储器4次。
二地址指令
运算的结果不存入存储器,而是存入CPU中的ACC,那么就可以节省一个地址字段A3。
一地址指令
一个操作数也存放在ACC中,那么整个地址码只有一个字段,表示另一个操作数所在内存地址。
零地址指令
有些操作不需要操作数,如停机、中断返回、空操作等。
指令字长
机器字长:计算机一次能够处理的最长的二进制位数
存储字长:一个存储单元可存储的二进制代码的位数
指令字长:指令中包含的二进制代码的位数,等于操作码长度加上地址码长度
操作数类型和操作类型
操作数类型
包括地址、数字、字符、逻辑数等。
存储器中数据的存放
边界对准。
操作类型
不同的机器操作类型不同,但是有以下几类通用操作。
- 数据传送
- 算术逻辑操作
- 移位操作
- 转移
- 无条件转移
- 条件转移
- 调用和返回
- 陷阱指令
- 输入输出指令
寻址方式
目的:用以确定本条指令的操作数地址和下一条欲执行指令的指令地址。
可分为:
- 指令寻址
- 数据寻址
指令寻址
分为
- 顺序寻址
依靠程序计数器PC形成下一条指令的地址,顺序寻址 - 跳跃寻址
通过转移类指令实现,如JMP 7
数据寻址
通常,指令中的地址码不给出数据的有效地址(记作EA),而是给出一个形式地址(A)。
- 立即寻址
形式地址A就是操作数,称为立即数;
但是形式地址A的位数限制了立即数的范围。 - 直接寻址
有效地址由形式地址直接给出;
但是,A的位数限制了指令操作数的寻址范围,且操作数的地址不易修改。 - 隐含寻址
操作数地址隐含在操作码中。 - 间接寻址
数据的有效地址由形式地址间接提供;
这样一来,可以扩大寻址范围,也便于编制程序。 - 寄存器直接寻址
有效地址即为寄存器编号。 - 寄存器间接寻址
有效地址在寄存器中,而操作数在存储器中。也就是说,与寄存器直接寻址相比,间接寻址还需要访问主存。 - 基址寻址
OP 寻址特征 基址寄存器 操作数地址
基址寄存器中的内容由操作系统确定,
在程序执行过程中,基址寄存器中的内容不变,而形式地址改变。基址寄存器有隐式和显式两种。
隐式无需用户指出,显式相当于在一组通用寄存器中,由用户明确指出哪一个作为基址寄存器。 - 变址寻址
特点:EA = (IX) + A
其中,IX为变址寄存器,其内容由用户给定
在程序执行过程中,IX内容可变,形式地址A不变 - 相对寻址
公式:EA = (PC) + A
A是相对于当前指令的位移量(可正可负,补码形式)
RISC与CISC
RISC,采用组合逻辑控制器
CISC,采用微程序控制器