Microprocessor-8086-interrupts
マイクロプロセッサ-8086割り込み
割り込み*は、プログラムの実行中に一時停止を作成する方法で、周辺機器がマイクロプロセッサにアクセスできるようにします。 マイクロプロセッサは、その割り込みに *ISR (割り込みサービスルーチン)で応答します。これは、割り込みの処理方法をマイクロプロセッサに指示する短いプログラムです。
次の画像は、8086マイクロプロセッサにある割り込みの種類を示しています-
ハードウェア割り込み
ハードウェア割り込みは、指定されたピンを介してマイクロプロセッサに信号を送信することにより、周辺機器によって発生します。
8086には2つのハードウェア割り込みピンがあります。 NMIおよびINTR。 NMIはマスク不能割り込みであり、INTRは優先順位の低いマスク可能割り込みです。 関連するもう1つの割り込みピンは、割り込み確認と呼ばれるINTAです。
NMI
これは、マスク可能な割り込み要求ピン(INTR)よりも高い優先度を持つ単一のマスク不可能な割り込みピン(NMI)であり、タイプ2の割り込みです。
この割り込みがアクティブになると、これらのアクションが発生します-
- 進行中の現在の命令を完了します。
- Flagレジスタ値をスタックにプッシュします。
- リターンアドレスのCS(コードセグメント)値とIP(命令ポインター)値をスタックにプッシュします。
- IPはワードロケーション00008Hの内容からロードされます。
- CSは、次のワード位置0000AHの内容からロードされます。
- 割り込みフラグとトラップフラグは0にリセットされます。
INTR
INTRはマスク可能割り込みです。これは、割り込みフラグの設定命令を使用して割り込みが有効になっている場合にのみマイクロプロセッサが割り込みを受けるためです。 割り込みフラグのクリア命令を使用して有効にしないでください。
INTR割り込みは、I/Oポートによってアクティブになります。 割り込みが有効でNMIが無効の場合、マイクロプロセッサは最初に現在の実行を完了し、INTAピンで「0」を2回送信します。 最初の「0」はINTAが外部デバイスに準備をすることを通知し、2番目の「0」の間にマイクロプロセッサがプログラム可能な割り込みコントローラーから8ビット、たとえばXを受信することを意味します。
これらのアクションは、マイクロプロセッサによって行われます-
- 最初に現在の命令を完了します。
- INTA出力をアクティブにし、割り込みタイプ(Xなど)を受け取ります。
- フラグレジスタ値、リターンアドレスのCS値、およびリターンアドレスのIP値がスタックにプッシュされます。
- IP値は、ワードロケーションX×4のコンテンツからロードされます
- CSは次の単語位置の内容からロードされます。
- 割り込みフラグとトラップフラグは0にリセットされます
ソフトウェア割り込み
割り込みを作成するために、プログラム内の目的の位置にいくつかの命令が挿入されます。 これらの割り込み命令を使用して、さまざまな割り込みハンドラーの動作をテストできます。 それが含まれています-
INT-タイプ番号のある割り込み命令
2バイトの命令です。 最初のバイトはオペコードを提供し、2番目のバイトは割り込みタイプ番号を提供します。 このグループには256種類の割り込みがあります。
その実行には、次の手順が含まれます-
- フラグレジスタ値がスタックにプッシュされます。
- リターンアドレスのCS値とリターンアドレスのIP値がスタックにプッシュされます。
- IPは、ワードタイプ「タイプ番号」の内容からロードされます×4
- CSは次の単語位置の内容からロードされます。
- 割り込みフラグとトラップフラグは0にリセットされます
type0割り込みの開始アドレスは000000H、type1割り込みの場合は00004H、type2の場合は同様に00008Hです。 最初の5つのポインターは、専用の割り込みポインターです。 i.e. −
- TYPE 0 割り込みは、ゼロ除算の状況を表します。
- TYPE 1 割り込みは、プログラムのデバッグ中のシングルステップ実行を表します。
- TYPE 2 割り込みは、マスク不可能なNMI割り込みを表します。
- TYPE 3 割り込みは、ブレークポイント割り込みを表します。
- TYPE 4 割り込みはオーバーフロー割り込みを表します。
タイプ5からタイプ31までの割り込みは、他の高度なマイクロプロセッサ用に予約されており、ハードウェアおよびソフトウェア割り込みでは、32からタイプ255までの割り込みを使用できます。
INT 3ブレークポイント割り込み命令
オペコードがCCHである1バイトの命令です。 これらの命令はプログラムに挿入されるため、プロセッサがそこに到達すると、プログラムの通常の実行が停止し、ブレークポイント手順に従います。
その実行には、次の手順が含まれます-
- フラグレジスタ値がスタックにプッシュされます。
- リターンアドレスのCS値とリターンアドレスのIP値がスタックにプッシュされます。
- IPは、ワードロケーション3×4 = 0000CHの内容からロードされます
- CSは次の単語位置の内容からロードされます。
- 割り込みフラグとトラップフラグは0にリセットされます
INTO-オーバーフロー命令で割り込み
これは1バイトの命令であり、ニーモニックの INTO です。 この命令のオペコードはCEHです。 名前が示すように、それは条件付き割り込み命令です。 オーバーフローフラグが1に設定され、割り込みタイプ番号が4の割り込みハンドラーに分岐する場合にのみアクティブになります。 オーバーフローフラグがリセットされると、実行は次の命令に続きます。
その実行には、次の手順が含まれます-
- フラグレジスタ値はスタックにプッシュされます。
- リターンアドレスのCS値とリターンアドレスのIP値がスタックにプッシュされます。
- IPはワード位置4×4 = 00010Hの内容からロードされます
- CSは次の単語位置の内容からロードされます。
- 割り込みフラグとトラップフラグは0にリセットされます