Microprocessor-8086-functional-units
マイクロプロセッサ-8086機能ユニット
8086マイクロプロセッサは、 EU (実行ユニット)と BIU (バスインターフェイスユニット)の2つの機能ユニットに分かれています。
EU(実行ユニット)
実行ユニットは、データをフェッチする場所を示す指示をBIUに与え、それらの指示をデコードして実行します。 その機能は、命令デコーダーとALUを使用してデータの操作を制御することです。 EUは、上図に示すようにシステムバスと直接接続していません。BIUを介してデータに対する操作を実行します。
8086マイクロプロセッサの機能部品について説明します。
ALU
+、-、×、/、OR、AND、NOT演算など、すべての算術演算と論理演算を処理します。
フラグレジスタ
これは、フリップフロップのように動作する16ビットのレジスタです。 アキュムレータに保存された結果に応じてステータスを変更します。 9つのフラグがあり、条件付きフラグと制御フラグという2つのグループに分かれています。
条件付きフラグ
最後に実行された算術命令または論理命令の結果を表します。 以下は、条件付きフラグのリストです-
- キャリーフラグ-このフラグは算術演算のオーバーフロー状態を示します。
- 補助フラグ-操作がALUで実行されると、下位ニブルからのキャリー/バローが発生します(つまり、 D0 – D3)から上位ニブル(つまり、 D4 – D7)、このフラグが設定されます。 D3ビットからD4に与えられるキャリーはAFフラグです。 プロセッサはこのフラグを使用して、バイナリからBCDへの変換を実行します。
- パリティフラグ-このフラグは、結果のパリティを示すために使用されます。 結果の下位8ビットに偶数の1が含まれている場合、パリティフラグが設定されます。 奇数の1の場合、パリティフラグはリセットされます。
- ゼロフラグ-算術演算または論理演算の結果がゼロの場合、このフラグは1に設定され、それ以外の場合は0に設定されます。
- Sign flag -このフラグは結果の符号を保持します。 操作の結果が負の場合、符号フラグは1に設定され、その他の場合は0に設定されます。
- オーバーフローフラグ-このフラグは、システム容量を超えた場合の結果を表します。
制御フラグ
制御フラグは、実行ユニットの動作を制御します。 以下は、制御フラグのリストです-
- トラップフラグ-シングルステップ制御に使用され、ユーザーはデバッグのために一度に1つの命令を実行できます。 設定されている場合、プログラムはシングルステップモードで実行できます。
- 割り込みフラグ-これは割り込みの有効/無効フラグです。 プログラムの中断を許可/禁止するために使用されます。 割り込みが有効な状態では1に設定され、割り込みが無効な状態では0に設定されます。
- 方向フラグ-文字列操作で使用されます。 名前が示すように、設定されると、文字列バイトが上位メモリアドレスから下位メモリアドレスにアクセスされ、逆も同様です。
汎用レジスター
AH、AL、BH、BL、CH、CL、DH、DLの8つの汎用レジスターがあります。 これらのレジスタは、8ビットデータを格納するために個別に使用でき、16ビットデータを格納するためにペアで使用できます。 有効なレジスタペアは、AHとAL、BHとBL、CHとCL、DHとDLです。 それぞれAX、BX、CX、およびDXと呼ばれます。
- * AXレジスタ*-アキュムレータレジスタとも呼ばれます。 算術演算のオペランドを格納するために使用されます。
- * BXレジスタ*-ベースレジスタとして使用されます。 データセグメント内のメモリ領域の開始ベースアドレスを格納するために使用されます。
- * CXレジスタ*-カウンタと呼ばれます。 ループカウンタを格納するためにループ命令で使用されます。
- * DXレジスタ*-このレジスタは、I/O命令のI/Oポートアドレスを保持するために使用されます。
スタックポインタレジスタ
これは16ビットのレジスタで、セグメントの先頭からメモリ位置までのアドレスを保持します。メモリ位置では、ワードが最後にスタックに格納されました。
BIU(バスインターフェイスユニット)
BIUは、アドレスの送信、メモリからの命令のフェッチ、ポートとメモリからのデータの読み取り、ポートとメモリへのデータの書き込みなど、EUのバス上のすべてのデータとアドレスの転送を処理します。 EUはシステムバスとの方向関係がないため、これはBIUで可能です。 EUとBIUは内部バスで接続されています。
次の機能部分があります-
- 命令キュー-BIUには命令キューが含まれています。 BIUは、最大6バイトの次の命令を取得し、命令キューに格納します。 EUが命令を実行し、次の命令の準備が整ったら、この命令キューから命令を読み取るだけで、実行速度が向上します。
- 現在の命令の実行中に次の命令をフェッチすることを*パイプライン*と呼びます。
- セグメントレジスタ-BIUには4つのセグメントバスがあります。 CS、DS、SS&ES。 プロセッサはメモリ位置にアクセスするために使用する命令とデータのアドレスをメモリに保持します。 また、EUによって実行される次の命令のアドレスを保持する1つのポインターレジスタIPが含まれています。
- CS -コードセグメントの略です。 これは、実行可能プログラムが格納されているメモリのコードセグメント内のメモリ位置をアドレス指定するために使用されます。
- DS -データセグメントの略です。 これは、プログラムが使用するデータで構成され、データセグメント内でオフセットアドレスまたはオフセットアドレスを保持する他のレジスタの内容によってアクセスされます。
- SS -スタックセグメントを表します。 実行中にデータとアドレスを保存するメモリを処理します。
- ES -Extra Segmentを表します。 ESは追加のデータセグメントで、追加の宛先データを保持するために文字列によって使用されます。
- 命令ポインタ-次の実行される命令のアドレスを保持するために使用される16ビットのレジスタです。