指令的长度有固定长度的和可变长度的两种,有些RISC的指令是固定长度的,但是,由于各种不同用途的指令所要表达的信息量差别很大,因此,目前多数计算机系统的指令字长是可变长度的。
  目前的绝多数计算机系统,指令长度通常取8的倍数,并且要求,当指令长度小于一个存储字时,不要跨越存储字存放,这是因为,如果跨越两个存储字存放,读取一条指令就需要访问两次存储器,从而降低了指令的执行速度。
  操作码长度也有固定长度的和可变长度的两种,下面分别举两个例子。
  IBM370系列计算机的指令长度有16位、32位和48位等几种,所有指令的操作码都是8位固定长度。在操作码中要给出操作种类、数据类型和寻址方式等。主要指令的格式如图3.3所示。
图 3.3 IBM370系列计算机的指令格式
  IBM370系列计算机采用两地址指令。有16个通用寄存器,可兼做变址寄存器和基址寄存器使用。
  RR型为通用寄存器型指令,参加运算的操作数都来自欲通用寄存器中,运算结果也放在通用寄存器中。指令字长只需要16位,一个存储字中可以放两条RR型指令。
  RX型为变址型指令,参加运算的一个操作数来自主存储器,并采用变址寻址方式,另一个操作数来自通用寄存器,运算结果放入通用寄存器中。指令字长为32位,正好一个存储字。
  RS型指令可用来在通用寄存器与主存储器之间一次传送多个数据。Rn为起始通用寄存器编号,Rm为结束通用寄存器编号,只要用一条指令就能把通用寄存器中从Rn开始到Rm结束的所有数据都存入相邻的主存单元中,同样,也可以从主存储器的相邻单元读出多个数据到通用寄存器中。在程序调用和中断处理时,用这种指令可以快速保存和恢复程序现场。
  SI型指令的一个操作数在主存储器中,另一个操作数为立即数。立即数的长度为8位,当然,立即数只能是第二操作数。SS型指令的两个操作数都在主存储器中,并且支持"串"操作。如字符串运算,十进制运算等,也可以用来把长度不超过256个字节的数据块从主存储器的一个区域搬到另一个区域。
  小型计算机PDP-11的指令格式如图3.4所示。其指令长度和操作码长度都是可变的,所采用的寻址方式很有特点。
图 3.4 PDP-11 小型计算机的指令格式
  操作码的长度有4位、7位、10位、13位和16位等几种,从4位开始,按等长3位扩展。共有8个通用寄存器,其中也包括程序计数器(R7)和堆栈指针(R6)。寻址方式有8种,见表3.5所示。
  从表3.5中可以看出,每个访问主存储器的地址只需要用6位表示,其中3位是寄存器编号,另外3位是寻址方式。用6位就能寻址整个主存储器的逻辑地址空间。
表3.5 PDP-11计算机的寻址方式
代码 名 称 汇编符号 有效地址 R中内容 说 明
000 寄存器寻址 R R 不变 R中内容即为操作数
001 自增寻址 (R)+ (R) (R)+d 字指令d=1,字节指令d=1
010 自减寻址 -(R) (R)-d (R)-d d的取值同上,(R)先减后用
011 变址寻址 A(R) (R)+A 不变 A为偏移量,16位
100 寄存器间址 (R) (R) 不变  
101 自增间址 @(R)+ ((R)) (R)+d d的取值同上
110 自减间址 @-(R) ((R)-d) (R)-d d的取值同上
111 变址间址 @A(R) ((R)+A) 不变 d的取值同上,A为偏移量