IN命令(機械語)

機械語において、IN命令とは、指定したI/Oアドレスに割り当てられている8個のI/Oポートの入力端子としての状態(8ビット)を任意のプロセッサレジスタ(以降、レジスタ)にコピーする命令のことです。

IN命令は、ポートマップドI/Oのプロセッサで利用されます。

メモリマップドI/Oでは、I/Oポートが割り当てられているメモリアドレスをコピー元として、ロード命令で指定することにより、IN命令と同じことができます。

IN命令のオペランド

IN命令では、少なくとも以下の二つのオペランドを指定します。

・I/Oアドレスをレジスタか即値で指定するオペランド

・8個のI/Oポートの入力端子としての状態をコピーするレジスタを指定するオペランド

IN命令の実行の流れ

機械語の命令の実行を基礎として、IN命令は、以下のように実行されます。

I/OアドレスをレジスタAで指定する場合

1. 「レジスタAを指定するオペランド」を制御信号として、レジスタAの値がI/Oアドレスバスに出力される。(詳細は、レジスタの指定を参照)

2. I/Oアドレスバスの値に対応した8個のI/Oポートの入力端子としての状態がI/Oデータバスに出力される。

3. 「レジスタBを指定するオペランド」を制御信号として、レジスタBの書き換えが有効にされる。

4. クロックの立ち上がりエッジでレジスタBにI/Oデータバスの値が書き込まれる。

I/Oアドレスを即値で指定する場合

1. 「即値を指定するオペランド」の値がI/Oアドレスバスに出力される。(詳細は、即値の指定を参照)

2. I/Oアドレスバスの値に対応した8個のI/Oポートの入力端子としての状態がI/Oデータバスに出力される。

3. 「レジスタBを指定するオペランド」を制御信号として、レジスタBの書き換えが有効にされる。

4. クロックの立ち上がりエッジでレジスタBにI/Oデータバスの値が書き込まれる。