トップ->アセンブラ入門

あなたは

人目のアセンブラの受講生です。

アセンブラ入門内検索

目次
アセンブラトップ
0. はじめに

1. 基礎
   1. レジスタとは
   2. セグメントとは

2. MOV命令
   1. MOV命令
   2. コンパイル
   3. 即値の転送
   4. メモリーへの転送
   5. データ定義疑似命令
   6. 練習問題

3. 算術演算
   1. 符号なし演算と符号付き演算
   2. 足し算
   3. 練習問題
   4. フラグ
   5. 引き算
   6. かけ算
   7. わり算
   8. INC,DEC

4. 分岐
   1. 無条件分離
   2. 比較命令
   3. 条件分離
   4. 練習問題
   5. ループ
   6. サブルーチン
   7. スタックとは
   8. PUSH,POP
   9. 練習問題

5. 論理演算
   1. AND命令
   2. OR命令
   3. XOR命令
   4. NOT命令
   5. NEG命令
   6. TEST命令
   7. 練習問題

6. シフト演算
   1. シフト
   2. ローテート
   3. 練習問題1
   4. 練習問題2

7. ストリング命令
   1. ストリング命令とは
   2. MOVS?
   3. REP
   4. DFの設定
   5. LODS?
   6. STOS?
   7. SCAS?
   8. CMPS?
   9 .練習問題

8. 入出力
   1. 概要
   2. IN命令
   3. OUT命令
   4. INS,OUTS命令

9. その他
   1. LEA
   2. XCHG
   3. NOP

10. 割り込み
   1. 割り込みとは
   2. ソフトウェア割り込み
   3. ハードウェア割り込み
   4. 割り込みベクター
   5. 割り込み処理の作り方
   6. 練習問題

11. レジスタの型変換(キャスト)

12. 卒業試験
   1. 卒業試験
   2. 画像データの格納形式
   3. インラインアセンブラ
   4. ネガポジ反転
   5. 明るくする、暗くする
   6. グレースケール
   7. 二値化
   8. 上下反転、左右反転
   9. 4分割
   10. モザイク
   11. シャープ
   12. ぼかし
   13. エンボス
   14. ディザ拡散
   15. 鉛筆を置いてください

13. 終わりに

文字コード

アセンブラ 〜MS-DOSの世界〜


・ このページの先頭に戻る
・ トップページに戻る



・ このページの先頭に戻る
・ トップページに戻る

トップ-> アセンブラ入門:10章.割り込み-> 10-4.割り込みベクター

←前ページへ :  トップへ :  次ページへ→



10-4.割り込みベクター

  では、割り込み番号からどのように割り込み処理のルーチンに飛ぶのだろうか?

  その前に、もう一度おさらいをする。ハードウェア割り込みの場合は割り込みが発生すると 割り込みコントローラーから割り込み番号を受け取る。プログラマーが「INT」命令などで、 行うトラップは、「INT 21h」などのように、割り込み番号はプログラムとして書かれている。 除算エラーなどのアボートやフォルトの場合はROMに書かれている割り込み番号を受け取る。

  そしてその割り込み番号から実際の処理に移行するには「割り込みベクター」と呼ばれる メモリーを参照してそこにジャンプする。80186以下のCPUや80286以上のリアルモードでは、 00000h〜00400hに割り込みベクターがセットされている。CPUの決まりであり、OSの決まりでは ない。したがってMS-DOS、N88-BASIC、その他のOS(Windowsなんかはプロテクトモードなので、 違う)でも同じ領域にセットされる。

  左図のように、割り込み番号0の処理は、アドレス00000hにそのオフセットアドレス が、00002hにセグメントアドレスが入っている。割り込み番号0の処理は、アドレス00004hに そのオフセットアドレスが、00006hにセグメントアドレスが入っている。これが256個分、 格納されている。したがって例えば割り込み番号0が発生すると、CSに[00002h]が IPに[00000h]の内容が格納され、そのアドレスにジャンプする。

  次に、割り込み番号0が発生した際の処理の流れを、詳しく説明する。
  • 割り込みが発生する
  • トラップ(INT ??での呼び出し)以外の場合は、割り込み許可フラグ(IF)を0にし、 他の割り込みを保留する
  • フラグレジスタ、CSレジスタ、IPレジスタをこの順番にプッシュする
  • 割り込みベクターを参照し、その処理ルーチンに移行する
  • その割り込み処理を実行する
  • その割り込み処理の最後には、割り込みコントローラーに対して、割り込み処理の 終了を通知するプログラムがあるので、それを実行する(トラップ以外)
  • 割り込み処理ルーチンの終わりを告げる「IRET」が実行される
  • 「IRET」が実行されると先ほどプッシュしたCS、IP、フラグをポップする
  • CS、IPがポップされると言うことは、もとの処理に戻るという意味で、もとの処理を続行する

  このような流れで割り込み処理を実行する。


←前ページへ :  トップへ :  次ページへ→