1、数据传送类指令
  数据传送指令的种类由如下三个主要因素决定:
  (1)数据存储设备的种类。数据传送指令的目标是要在相同或不同的数据存储设备之间传送数据。
  计算机系统中可以寻址的主要数据存储设备有:通用寄存器、主存储器、堆栈等三种,这三种存储设备的有效排列有8种可能。
  对于输入输出设备,虽然它也可能是数据存储设备,但是,输入输出设备具有许多与其它数据存储设备不同的地方,因此,许多计算机系统用专门的输入输出指令对它进行管理。
  (2)数据传送的单位。通常有字、字节、数据块等3种。
  (3)采用的寻址方式。根据机器种类不同,差别很大,一般在4至20种之间。寻址方式可以放在操作码中,如IBM370计算机,也可以放在地址码中。如果把寻址方式放在地址码中,指令的种类就可以减少许多种。
  如果把寻址方式放在地址码中,并且不考虑输入输出设备,则以字为传送单位的指令应该有如下8种:
  通用寄存器->通用寄存器
  通用寄存器->主存储器
  通用寄存器->堆栈
  主存储器->通用寄存器
  主存储器->主存储器
  主存储器->堆栈
  堆栈->通用寄存器
  堆栈->主存储器
  对于以字节或以数据块为单位的数据传送指令,指令种类可以适当减少。
  2、运算类指令
  目前,在许多应用领域中,计算机的主要任务还是做运算(包括数值计算和符号处理),因此,运算型指令在整个指令系统中应该占有比较大的比重,如指令种类不少于30%。如果所占比重过小,就会影响整个计算机系统的性能。
  对于运算类指令,主要考虑如下四个因数的组合:
  (1)操作种类。包括加、减、乘、除等常用操作,另外还有比较、移位、检索、转换、匹配、清除、设置等操作,
  (2)数据表示。有定点数、浮点数、逻辑数、十进制数、字符串、向量等。
  (3)数据长度。字、双字、半字、字节、位等。
  (4)数据存储设备。主要有通用寄存器、主存储器和堆栈等三种。
  例如,仅加法指令,且源操作数和运算结果都在通用寄存器中,一般应设置如下几种不同的指令:
  寄存器-寄存器型的定点单字长加法指令,
  寄存器-寄存器型的定点双字长加法指令,
  寄存器-寄存器型的定点半字加法指令,
  寄存器-寄存器型的字节加法指令,
  寄存器-寄存器型的浮点单字长加法指令,
  寄存器-寄存器型的浮点双字长加法指令,
  寄存器-寄存器型的单字长逻辑加法指令,
  寄存器-寄存器型的定点向量加法指令。
  寄存器-寄存器型的浮点向量加法指令。
  对于两地址指令,如果再要考虑数据的存储设备,除了RR型指令之外,还有RS型、SS型、堆栈型等组合,仅加法指令就有几十种之多。
  因此,在对上述这些因素进行组合时,必须考虑指令的执行时间、使用频度、硬件实现的复杂程度等多方面的情况。分析出哪些指令是必须要设置的,哪些是可有可无的(也可用软件的一段子程序来实现),哪些是不合理是不应该设置的。并经过模拟实验和统计分析,最后确定出合理的运算类指令。
  另外,有两类比较特殊的操作,移位指令和位/串操作指令的设置与一般的运算类指令有所不同。
  对于移位指令,要组合以下三个因素:
  (1)移位方向,有左移(L)和右移(R)两种;
  (2)移位种类,有算术移位(A)、逻辑移位(L)和循环移位(R)三种;
  (3)移位长度,有单字长(S)和双字长(D)两种。
  把以上三个因素进行组合:3×2×2=12种。因为逻辑左移和算术左移的操作结果完全相同的,从而可以减少两种,所以,移位指令应该有10种。
  移位指令一般应该有两个源操作数,其中,第二源操作数给出移位的位数。
  10种移位指令分别为:
  
  位操作操作通常有:置位(把一个字或一个字符串中某一位置"1")、清位、位测试、找位(把一个字或一个字符串中第一个"1"的序号找出来)。
  字符串操作主要有:比较、查找、匹配、转换(如ASCII码与BCD码的转换,ASCII码与EBCDIC码的转换等)。