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

あなたは

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

アセンブラ入門内検索

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


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



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

トップ-> アセンブラ入門:5章.論理演算-> 5-3.XOR命令

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



5-3.XOR命令

  XOR命令は「排他的論理和」を表す。排他的論理和とは「両方とも同じなら0、異なる 場合は1」である。

  これを表にすると下のようになる。(このような表を真理値表という)

DESTSRC結果(DEST)
000
011
101
110

XOR	DEST,SRC

   動作:DEST←DEST xor SRC
  影響を受けるフラグ:OF=0,CF=0,ZF,SF,PF,AF
    DEST:レジスタ、メモリー
    SRC :レジスタ、メモリー、即値(ただしメモリー、メモリーの組み合わせは除く)

  フラグはCF,OFがクリアされる。AFは不定。結果が0になった場合ZF=1、それ以外はZF=0。 上位1bitがSFに反映される。PFは結果に応じてセットされる。



用途
  XORは次のような用途に使われる。

・ビットの反転
例えば4bit目と5bit目を反転したい場合、次のようにする

	xor	al,00011000b	

al=78h(=11110000b)の場合、
11110000
00011000

11101000
となり、4bit目と5bit目が反転されていることがわかる。


・データの暗号化
同じ値で2度排他的論理和をとるともとの値に戻る。これを利用することで簡単なデータの 暗号化を行うことができる。
例えば、78h(=11110000b)を暗号キー53h(=01010011b)で暗号化すると、
11110000
01010011

10100011
10100011(=A3h)が得られる。これをもう一度、暗号キー53h(010100011)で復元すると
10100011
01010011

11110000
11110000b(=78h)が得られ、これは最初の値と同じである。このように、 暗号化、復元が簡単にできる。


・レジスタへの0の代入
下のようにSRCとDESTに同じレジスタを用いるとそのレジスタは0になる。

	xor	al,al	

例えば、AL=78h(=11110000b)の場合、
11110000
11110000

00000000
この方法は、レジスタが8bit,32bitの時はメリットはないが、16bitレジスタの場合は 命令のサイズが1バイト小さくなる。しかしCPUが8086の場合、若干処理速度が遅くなる。 頻繁的に使われる方法である。


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