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

あなたは

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

アセンブラ入門内検索

目次
アセンブラトップ
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-5.割り込み処理の作り方

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



10-5.割り込み処理の作り方

  では、実際に割り込み処理を作ってみる。その前に作るためにはどうすればよいのかを説明する。

割り込み処理内
  • 「CLI」命令を用いて割り込み許可フラグを0にする
  • 処理をする
  • 割り込みコントローラーに割り込み処理を終えたことを通知する
  • 「STI」命令を用いて割り込み許可フラグを1にする
  • IRETで戻る
  • もし、もとの処理も実行したい場合は、割り込みコントローラーに割り込み処理を 終えたことを通知する前に、もと処理へfar jumpする
割り込み処理を設定する場合
  • MS-DOSのシステムコールに割り込みベクターを設定する方法があるのでそれを使用する。 ただし、もとのアドレスを保管するのを忘れずに
  • MS-DOS以外のOSでは、自分で割り込みベクターを書き換えなくてはならない。
    • 「CLI」命令を用いて割り込み許可フラグを0にする(割り込みベクターを書き換えている 途中にその割り込みが入ると、予期せぬところに処理が行ってしまうから)
    • 割り込みベクターの位置を計算し、現在のアドレスを保管する。
    • 新しい処理のアドレスを書き込む
    • 「STI」命令を用いて割り込み許可フラグを1にする

割り込みはいつ、いかなる状態で呼ばれるかわからないので、以下に注意する必要がある
  • レジスタの値はわからない(セグメントを含め)
  • レジスタを破壊してはいけない(元に戻ったときに処理を続行できない)
  • あまりPUSH,POPなどを多用しない(スタック領域の大きさがわからないので)
  • 処理はできるだけ速く終わらせる。(もとの処理が何の処理かわからないので速くその処理に戻さなくてはいけない)
  • 割り込み内容にもよるが、OSのサービス(システムコール)を利用できない (キーボードからの入力をしようと思っても、キーボードの割り込みが起こらない)

・割り込みベクターの設定

AH=25h
AL=割り込み番号
DS=新しい割り込み処理のセグメント
DX=新しい割り込み処理のオフセット
をセットし、「INT 21h」を実行する

・割り込みベクターの取得

AH=35h
AL=割り込み番号
をセットし、「INT 21h」を実行する
ES=現在の割り込み処理のセグメント
BX=現在の割り込み処理のオフセット



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