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