指令(又称机器指令)是指示计算机执行某种操作的命令,是计算机运行的最小功能单位。一台计算机的所有指令的集合构成该机的指令系统,也称为指令集合。指令系统是计算机的主要属性,位于硬件和软件的交界面上。一台计算机只能执行自己指令系统中的指令,不能执行其他系统的指令。
指令通常包括操作码字段和地址码字段。操作码是识别指令,了解指令功能及区分操作数地址内容的组成和使用方法等的关键信息,地址码给出被操作的信息的地址。指令的长度取决于操作码的长度,操作数地址码的长度和操作数地址的个数。指令长度与机器字长没有固定关系,通常把指令长度等于机器字长的指令称为单字长指令,指令长度等于半个机器字长的指令称为半字长指令,指令长度等于两个机器字长的指令称为双字长指令。
根据指令中操作数地址码的数目的不同,可将指令分为多种形式
1> 零地址指令
1.不需要操作数。如:停机指令,关中断指令。
2.零地址的运算类指令仅用在堆栈计算机中。通常参与运算的两个操作数隐含地从栈顶和次栈顶弹出,送到运算器中进行运算,运算结果再隐含的压入堆栈。
2> 一地址指令
1.指令OP(A1)-->A1,一共访问3次主存
2.指令可隐含约定另一个操作数由ACC(累加器)提供,运算结果也存在ACC中。(ACC)OP-->ACC
3> 二地址指令
分别给出目的操作数和源操作数的地址,其中目的操作数地址还用于保存此次运算的结果。(A1)OP(A2)-->A1
4> 三地址指令
(A1)OP(A2)-->A3,需要访问4次主存
5> 四地址指令
(A1)OP(A2)-->A3,A4=下一条将要执行指令的地址
定长操作码指令格式,是指在最高位部分分配固定的若干位(定长)表示操作码。当计算机字长为32位或更长时,这是常规方法。
扩展操作码指令,操作码的长度随地址码的减少而增加,不同地址数的指令可具有不同长度的操作码,从而在满足需要的前提下,有效地缩短指令字长。但需要主要2点
1> 不允许短码是长码的前缀,端操作码不能与长操作码的前面部分的代码相同。
2> 各指令的操作码一定不能重复
一般情况下,对使用频率较高的指令分配段操作码,对使用频率较低的指令分配较长的操作码。