4.1 指令格式
出自up主Beokayy传送门
1. 指令字长
- 指令字长即一条指令中所包含的二进制代码的位数。
- 指令字长和机器字长无固定关系,与存储字长呈倍数关系。
- 通常情况下:
- 单字长指令:指令字长=存储字长。
- 半字长指令:指令字长=半个存储字长。
- 双字长指令:指令字长=两个存储字长。
- 机器周期与取指周期的关系:
- 若指令字长=存储字长,则机器周期等于取指周期。
- 若指令字长=两个存储字长,则机器周期等于二分之一的取指周期。
2. 指令的基本格式
- 操作码:指出该指令应该执行什么性质的操作以及具有何种功能。
- 地址码:给出被操作的信息的地址。
3. 指令格式的分类
零地址指令
- 只给出操作码OP,没有显式地址。
- 这种指令有两种可能:
- 不需要操作数的指令,例如空操作指令、停机指令、关中断指令等。
- 在堆栈计算机里,运算类指令的执行过程通常是:参与运算的两个操作数会自动地从栈顶和次栈顶弹出,然后被传送到运算器中进行运算,运算完成后的结果又会自动地压入堆栈。
一地址指令
- 这种指令有两种可能:
- 只有目的操作数的单操作数指令。按A1地址读取操作数,进行OP操作后,结果存回原地址。
- 隐含约定目的地址的双操作数指令。按A1地址读取源操作数,另一个操作数可隐含约定放置在ACC中,运算结果也将存放在ACC中。
二地址指令
- (A1)OP(A2)->A1。
- A1为目的操作数,A2为源操作数,本次运算结果将存放于目的操作数地址A1。
三地址指令
四地址指令
- (A1)OP(A2)->A3,A4为吓一跳要执行指令的地址。
4. 定长操作码与扩展操作码
定长操作码
- 将指令字的最高位部分分配固定的若干位表示操作码。
- n位操作码字段的指令系统最大能够表示 2 n 2^n 2n种指令。
扩展操作码
- 指令的操作码字段的位数不固定,操作码的长度随地址码的减少而增加,不同地址数的指令可具有不同长度的操作码,从而在满足需要的前提下有效地缩短指令字长。

注:图片有误,零地址指令前几位全是1 - 扩展原则: