PDP-8
PDP-8はIOT命令をほとんど定義せず、単に枠組みを提供している。多くのIOT命令がどう作用するかは個々の周辺機器によって異なる。
IOT命令のビット9からビット11までで、そのデバイスで実行すべき機能を指定する。紙テープリーダー/パンチやコンソールなどの単純な機器では、次のように解釈する。 ビット11 - 指定した周辺機器がレディ状態なら次の命令をスキップする。 ビット10 - AC をクリア ビット9 - その周辺機器とACの間で1ワードを転送し、次のI/O転送を開始し、機器のレディフラグを落とす。
複数のビットをセットすると、適切な順序でそれらが行われる。
ディスクドライブなどのより複雑な周辺機器では、それぞれ固有の機能をこの3ビットで表す。一般に8種類の機能コードを設定できる。
7410 – SKP - 無条件に次命令をスキップ
7610 – CLA – ACをクリア
7510 – SPA - AC >= 0 のとき次命令をスキップ (and group)
7450 – SNA - AC ≠ 0 のとき次命令をスキップ (and group)
7430 – SZL - L = 0 のとき次命令をスキップ (and group)
ビット8がセットされている場合、スキップ条件はOrグループのときと逆であり、いずれかの条件が真でないときスキップは行わない。つまり、指定された条件が全て真となる必要がある(条件はANDされる)。例えば "SPA SNA" 命令コード 7550 は AC > 0 のときスキップする。ビット5からビット7が全くセットされない場合、無条件でスキップする。
これまでのグループで使われていないビットの組合せのOPR命令はグループ3に分類され、多くは MQ (Multiplier/Quotient) レジスタに関連する。
7601 – CLA – ACをクリア
7501 – MQA – Multiplier/Quotient を AC にORする
7441 – SCA – ステップカウンタをACにロード
7421 – MQL – AC を Multiplier/Quotient にロードし、ACをクリア
7621 – CAM – CLA + MQL なので、ACとMQを共にクリア
通常、CLAとMQAを組み合わせてMQの中身をACに転送する。MQAとMQLの組合せも便利で、ACとMQの中身を交換する。
ビット8からビット10までの3ビットで以下のいずれかの命令が実行される。
7401 – 何もしない
7403 – SCL – ACからステップカウンタへのロード(即値ワードが後置される。PDP-8/Iかそれ以降)
7405 – MUY – 乗算
7407 – DVI – 除算
7411 – NMI – 正規化
7413 – SHL – 左シフト(即値ワードが後置される)
7415 – ASR – 算術右シフト
7417 – LSR – 論理右シフト
条件付き操作のほとんどを含め、多くの操作はOPR命令として実行される。OPR命令ではメモリ位置をアドレスで示すということがない。条件付き操作は1命令をスキップするか否かを判断する命令であり、通常はその1命令をJMP命令とすることで条件分岐として機能させる。
OPR命令はマイクロコード化されている。これはマイクロプログラム方式だということを意味しているのではなく、命令語の各ビットがそれぞれ特定の動作に対応しており、複数のビットをセットすることでそれらを1命令で実行できる場合があることを意味している。アセンブリ言語で記述する際には複数のニーモニックを並列に書く。するとアセンブラがそれらのコードをORして1命令にする。上述のIOT命令も周辺機器がマイクロコード化している。
マイクロコード化された動作の実行順序は決まっており、多くの組合せが最も便利になるような順序で実行される。
OPR命令にはいくつかのグループがある。ビット3、ビット8、ビット11 でグループが識別され、異なるグループのマイクロコード化操作は1命令で指定できない。