3、程序控制指令
  程序控制指令主要包括三类,转移指令(包括无条件转移和条件转移)、程序调用和返回指令、循环控制指令。其中,前两类指令在一般计算机中是必须具备的。最后一类指令用于对循环程序进行优化。
  转移指令中的无条件转移指令通常有两种:一种时是局部无条件转移,采用相对寻址方式,转移范围一般比较小;另一种是全局无条件转移,可以在整个寻址空间内转移。
  条件转移指令所依据的转移条件主要有:全零(Z)、正负号(N)、进位(C)、溢出(V)及它们的组合等。
  主要的条件转移指令有:
  BEQ 等于零转移
  BNEQ 不等于零转移
  BLS 小于转移
  BGT 大于转移
  BLEQ 小于等于转移,或不大于转移
  BGEQ 大于等于转移,或不小于转移
  BLSU 不带符号小于转移
  BGTU 不带符号大于转移
  BLEQU 不带符号小于等于转移,或不带符号不大于转移
  BGEQU 不带符号大于等于转移,或不带符号不小于转移
  BCC 没有进位转移
  BCS 有进位转移
  BVC 没有溢出转移
  BVS 有溢出转移
  第二类程序控制操作是程序调用和返回指令,主要有两条:
  CALL 转入子程序
  RETURN 从子程序返回
  这两条指令本身可以带有条件,当测试条件满足时转入子程序或从子程序返回,也可以不带条件。如果调用和返回指令本身不带条件,则要与条件转移指令联合使用,如果本身带有条件,目标程序就可以简化。
  在执行调用指令时,要保存硬件现场(主要指程序计数器和处理机状态字)和软件程序现场(指在子程序中要使用的通用寄存器等);当从子程序返回时,再恢复这些现场。
  在设置有系统堆栈的计算机中,硬件现场和程序现场都可以压入堆栈。如果没有设置堆栈,则要在主存储器中开辟出一块专门的区域或指定专门的通用寄存器等来保存硬件现场。而软件程序现场的保存则由程序员自行决定。
  另外,中断控制指令和自陷指令(或称为过程调用指令)也属于程序调用指令。中断控制指令主要有:开中断、关中断、改变屏蔽状态、从中断程序返回等指令。自陷指令主要用来转入例行子程序,或在程序调试过程中用来设置断点等。
  4、输入输出指令
  输入输出指令通常比较简单,采用单一的直接寻址方式,数据字长一般以字节为单位。主要的输入输出操作有:启动设备、停止设备、测试设备、对设备进行控制及数据的输入或输出操作等。
  在多用户或多任务环境下,输入输出指令属于特权指令。当程序需要进行输入输出操作时,首先通过系统调用进入操作系统,然后由操作系统对设备统一进行管理。
  有些计算机系统,把输入输出设备与主存储器统一编址,共用同一个零地址空间。在这类计算机系统中,没有专门的输入输出指令,所有能够访问主存储器的指令都能访问输入输出设备。
  5、处理机控制和调试指令
  在一般计算机系统中,处理机有两个状态:管理态和用户态,或称主态和从态。这两个状态需要互相切换,而且,这两个状态下所能使用的指令应该有所区别。例如,一般用户应该严禁使用处理机状态切换、系统资源分配和管理等指令,否则,一个多用户操作系统将无法正常工作。
  在一般通用计算机系统中,按照指令的使用权限,可以把指令分为两大类:一般指令和特权指令。只有系统管理程序能够使用,一般用户程序不能使用的指令称为特权指令。主要包括处理机状态的设置和管理、系统硬件和软件资源的管理、进程的管理等。
只有在管理态下才能够使用机器所提供的全部指令,包括特权指令。在用户态下,只能使用一般指令,不能使用特权指令。
  有些处理机还设置有更多的状态,如VAX-11处理机有四种状态,每种状态有不同的特权,离内核态越近,所具有的特权就越高,这四种状态分别是:
  内核态(K):供操作系统的核心使用,运行操作系统内核程序,包括存储器页面管理和调度,输入输出子系统及大部分系统服务。
  执行态(E):运行部分系统服务程序,包括系统调用,系统的记录和管理等。
  管理态(S):用于命令解释等服务,运行命令解释程序。
  用户态(U):用于一般用户服务,运行用户级程序,包括各种实用程序、编译程序和调试程序等。
  调试指令主要用于硬件和软件的调试。硬件调试指令主要有:钥匙位置的读取,开关状态的读取,内部主要寄存器和主存单元的显示等。软件调试指令主要有断点的跟踪,自陷指令等。