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

あなたは

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

アセンブラ入門内検索

目次
アセンブラトップ
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の世界〜


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



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

トップ-> アセンブラ入門:8章.入出力-> 8-1.概要

←練習問題へ :  トップへ :  次ページへ→



入出力


8-1.概要

  入出力はI/O(Input / Output)と略される。コンピュータのI/Oはもう少し意味が拡張されており、 キーボード、プリンター、ディスプレイなど「うん、入出力機器だな」とわかるものから、 タイマーなど、「えっ、入出力機器なの?」というものまで含まれ、キーボードでも キーボードを制御する半導体などもI/Oと言う。

  今半導体という言葉を出したが、ほとんどの装置はその装置を制御する半導体があるから こそ使える。下図のようにその制御する半導体はメモリーと同じように、制御線、アドレスバス、 データバスからなる。

  ということは、CPUから見れば、メモリーと全く同じなのである。ただしコンピュータによっては その扱い方が異なり、その方法は2種類ある。

Memory Mapped I/O
  主に、モトローラ系CPU、日立系CPU、NEC系CPUで採用されている。

  例えばアドレスバスが16bitのCPUでは65536バイトのメモリー空間を使用できる。 そのうち少しをこのI/O用のデバイス制御の空間を設ける方法である。

  65536バイトのうち、上位256バイト分をこのデバイス制御に割り当てると、その256 バイトに「MOV」命令のような転送命令でデータを書き込むと、メモリーではなくて、 デバイス制御装置にデータが渡される。逆にその256バイトからデータを読もうとすると、 メモリーからではなくて、デバイス制御装置の状態が読みとれる方法である。

  この方法では、アクセス方法は非常に簡単だが、メモリー空間が少なくなること、 プログラムが暴走した際に、偶然にもディスクコントローラーにデータを送ってしまうと、 フロッピーが壊れたり、何が起こるか全く予想がつかないなどの欠点がある。

I/O Mapped I/O
  主に、インテル系CPU、NEC系CPUに採用されている。

  x86系CPUで使われている方法で、例えばx86系CPUではメモリー空間のほかに、 64Kバイト(65536バイト)分の入出力専用の空間を設けている。入出力に関わるデータ転送 などは、この専用の空間を用いてアクセスする。

  従って、メモリー専用の入出力命令「MOV」ではなくて、専用の命令を用いなければならない。 それがこの章で解説する「IN」、「OUT」、 「INS」、「OUTS」である。

  この方法では、メモリー空間とは別の専用空間を用いるので、メモリー空間が少なくなること がなく、プログラムが暴走してもフロッピーが壊れるなど予期せぬアクシデントが少ない。


←練習問題へ :  トップへ :  次ページへ→