(1) 算术与逻辑运算指令,是每台计算机都必须具有的指令,它通常用于在计算机的运算器部件中完成对一或两个数据的算术运算或逻辑运算功能。这些内容在第二章讲解运算器部件的功能时已经看到。不同档次、不同性能的计算机所能加工、运算的数据类型(整数、浮点数、十进制数等)和支持的运算功能(加、减、乘、除、变符号等)的完备程度可以有所差异,但一般都须给出算术与逻辑运算的结果,以及结果的有关特征。

 (2) 移位操作指令,包括算术移位、逻辑移位、循环移位三种,用于把指定的一个操作数左移或右移一(多)位。从实用的角度,算术移位指令常使用右移功能,对补码表示的一个二进制数,最高位上的符号位不变,再把符号位和数据位同时右移一位;算术左移位指令不大常用,数据位侵犯符号位会造成出错;逻辑左(右)移位通常是在最低(高)一位移入0值,把最高(低)一位移出的值送到进位触发器C中;循环移位通常则是把进位触发器C和一个被移位的数据首尾衔接起来一同实现左或右移位操作。

 (3) 数据传送指令,用于实现通用寄存器之间、通用寄存器与内存储器存储单元之间、内存储器不同存储单元之间、寄通用存器与外围设备(接口)之间(有些场合也可以单独划分为输入/输出指令)的数据传送功能。从内存储器和外围设备(接口)操作性质的不同,又可以区分为读和写两种操作,它指明数据传送的方向。

 (4) 转移指令、子程序调用与返回指令,用于解决变动程序中指令执行次序的需求。

  转移指令,是一种简单指出变动程序中指令执行次序的指令。程序中的指令,大部分是按指令排列的自然次序顺序执行,但有时侯又要求变动指令的执行次序,不执行邻接的下一条指令,而转移到另一段程序入口处开始执行,此时就需要用一条转移指令指明这一变动。转移指令,又被区分为必定(无条件)转移指令和条件转移指令,二者的相同之处是都必须在指令中给出转移地址,不同之处是,条件转移指令还必须在指令中给出判断是否执行转移所依据的条件,通常是程序状态字中的C(进位)、Z(结果为0)、V(结果溢出)、S(符号位)的取值是0还是1,或它们的某种组合结果,只有依据的条件为真,才转移到指令中指定的地址处,否则顺序执行;而无条件转移指令必定执行转移。

  子程序调用指令与返回指令,可以被理解为一种特定的转移指令,二者要配合使用,通过子程序调用指令,使一段被称为子程序的特定程序段投入运行,而该程序段的最后一条指令,一定是一条子程序返回指令,它会使子程序运行结束后,确保转移回到排在子程序调用指令之后的那条指令处接着执行。而一般的转移指令,并不涉及转移走之后是否和如何再次转移回来的问题。

  再深入一步讲,子程序又可以被分为用户自己编写的子程序和软件系统提供的子程序,这后一部分又被称为访问系统程序(访管)指令、陷阱(TRAP)指令。访管指令,用于调用系统提供的服务程序,如完成输入/输出操作,建立文件、执行文件读写等;陷阱指令,重点用于解决计算机运行过程中遇到意外事故时的应对处理,如计算机断电、主存储器奇偶校验出错、输入/输出设备故障、非法指令、非法运算(如0作除数)。访管指令与陷阱指令的区别在于,前一类指令要写在用户程序中,执行到这一指令时,会调用系统提供的服务程序;后一类指令则不会出现在用户程序中,它的运行是由于出现了某个事件而自动引发出来的。有些计算机系统也为用户提供设计、使用TRAP指令的手段。

 (5) 特权指令,是指仅用于操作系统或其它系统软件的指令,为确保系统与数据安全起见,这一类指令不提供给用户使用。这一类指令主要用于管理与分配系统资源,包括改变系统的工作方式,完成任务的创建或切换,变更管理存储器用的段表和页表中的内容等。特权指令对多用户或多任务系统是必要的。

 (6) 其它指令,如动态停机指令、空操作指令、置条件码指令、开中断指令、关中断指令、堆栈操作指令等,用于完成某些特定的处理功能。