
相关链接|
¶指令格式

-
一个指令可能包括包含 0个、1个、2个、3个、4个 地址码
根据地址码的不同,可将指令分为 零地址指令、一级地址指令、二级地址指令 …
¶零地址指令op
零地址指令不需要指令操作数。
-
不需要操作数,如 空操作、停机、关中断等指令
-
堆栈计算机,两个操作数隐存放在栈顶和次栈顶,计算结果压回栈顶
¶一地址指令

-
只需要单操作数,如 加1、减1、取反、求步等
指令含义:$OP(A_1) \rightarrow A_1$
-
需要两个操作数,但其中一个操作数隐含在某个寄存器(如隐含 在ACC)
指令含义:$(ACC)OP(A_1) \rightarrow ACC$
注:$A_1$指某个主存地址,$(A_1)$表示$A_1$所指向的地址中的内容
¶二地址指令

常用于需要两个操作数的算数运算、逻辑运算相关指令
指令含义:$(A_1)OP(A_2) \rightarrow A_1$
¶三地址指令

常用于需要两个操作数的算数运算、逻辑运算相关指令
指令含义:$(A_1)OP(A_2) \rightarrow A_3$
¶四地址指令

指令含义:$(A_1)OP(A_2) \rightarrow A_3$,$A_4 = \text{下一条将要执行指令的地址}$
完成一条指令需要访存 4 次,取址 -> 读 A1 -> 读A2 -> 写A3
四地址指令:执行指令后,将PC的值修改位 $A_4$ 所指地址
¶指令分类

¶按指令长度分类
-
指令字长:一条指令的长度 可能会变
-
机器字长:CPU进行一次整数运算所能处理的二进程的位置(通常与 ALU 直接相关)
-
存储字长:一个存储单元中的二进制代码位数(通常和 MDR 位数相同)
定长指令字结构:指令系统中所有指令长度都相等
变长指令字结构:指令系统中各种指令的长度不变
¶按操作码长度分类
-
定长操作码:指令系统中所有指令的操作码长度都相等
-
可变长操作码:指令系统中各指令的操作码长度可变
定长指令字结构 + 可变长操作码 -> 拓展操作码指令格式
¶按指令类型分类

总体上,我们将指令按类型分为:
-
数据传送类:进行主存与 CPU 之间的数据传送
-
运算类
-
程序控制类:改变程序执行的顺序
-
输入输出类:进行 CPU 和 I/O 设备之间的数据传送
¶回顾
