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

あなたは

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

アセンブラ入門内検索

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


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



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

トップ-> アセンブラ入門:1章.基礎-> 1-1.レジスタとは

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



基礎



1-1.レジスタとは

  一般にメモリーと呼んでいるメモリーは正確には「主記憶装置」と言います。 この他に、CPU(演算装置)内にも少ないけれどもメモリーがあります。このメモリーは 安くて低速な主記憶装置とは異なり、速くて高いメモリーです。このメモリーには、 次に実行する命令、次に実行する命令がどこにあるのかを示すアドレス、 主記憶装置にアクセスするためのセグメント(リアルモード)もしくはセレクタ (プロテクトモード)、さらにレジスタと呼ばれる変数みたいなものなどが 記憶されています。言い換えればそれしか記憶できない小さなメモリーです。 このホームページでは「メモリー」は主記憶装置を指し、、「レジスタ」は CPU内のメモリー(レジスタ)を指すことにする。

  最近のCPUでは、CPUと主記憶装置の間にキャッシュと呼ばれる高速で高価な メモリーを持っています。この高速なメモリーは低速な主記憶装置に比べて、 約10倍の速度でアクセスできます。

  さて、このページでは基本的に16bitのアセンブラについて書いていますので、 最近のCPUのことはこのくらいにします。

  このCPU内の小さなメモリーのことをもう少し詳しく説明します。話ばかりで、 退屈かと思いますが、アセンブラにとっては大事なことなので、我慢してください。

  このメモリーのうち、実行すべき命令を覚えるメモリー以外をレジスタと呼びます。 レジスタには以下のような種類があり、汎用レジスタは今は変数だと思っていてください。

  8086,80186,(V30),80286では緑の部分しか使えません。

  AH, AL, BH, BL, CH, CL, DH, DLレジスタは8bitすなわち1byteの大きさです。

  AX, BX, CX, DX, SI, DI, BP, SP, IP, FLAGS, CS, SS, DS, ES, FS, GSは16bit(2bytes)の大きさです。

  EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP, EIP, EFLAGSは32bit(4bytes)の大きさです。

  AXはAHとALから構成されており、AHやALを変更するとそれに伴ってAXやEAXも変化しますし、AXを 変更するとEAXやAHもしくはALも変化します。以下、BX, CX, DXも同様です。

  さらにSI, DI, BP, SP, IP, FLAGSを変更するとESI, EDI, EBP, ESP, EIP, EFLAGSも変化します。
  次に特別なレジスタについて説明します。

CS
次に実行すべき命令があるアドレスのセグメントを指します。

SS
スタックを格納するアドレスのセグメントを指します。

DS,ES
データの読み書きをするアドレスのセグメントを指します。

EIP(IP)
次に実行すべきアドレスのオフセットを指します。

EFLAGS(FLAGS)
CPUの状態や前の命令の実行結果のエラー状態が入ります。 詳しくは後に譲ります。

ESP(SP)
スタックを格納するアドレスのオフセットを指します。

EBP(BP)
ここでは「特別な用途に使用し、滅多に変更しない」と覚えておいてください。

ESI,EDI(SI,DI)
ストリング命令に使用しますが、何に用いても良い。

ECX(CX)
何に用いても良いが、主にカウンタとして使うことが多い。

EAX,EBX,EDX(AX,BX,DX)
何に用いても良い。


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