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

あなたは

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

アセンブラ入門内検索

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


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



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

トップ-> アセンブラ入門:4章.分岐-> 4-3.条件分岐

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



  次はフラグを見て分岐する命令です。
ニーモニック 意味 意味 フラグ
JA
JAE
JB
JBE
JC
JE
JG
JGE
JL
JLE
JNA
JNAE
JNB
JNBE
JNC
JNE
JNG
JNGE
JNL
JNLE
JNO
JNP
JNS
JNZ
JO
JP
JPE
JPO
JS
JZ
Jump if avobe
Jump if avobe or equal
Jump if below
Jump if below or equal
Jump if carry
Jump if equal
Jump if great
Jump if great or equal
Jump if less
Jump if less or equal
Jump if not avobe
Jump if not avobe or equal
Jump if not below
Jump if not below or equal
Jump if not carry
Jump if not equal
Jump if not great
Jump if not great or equal
Jump if not less
Jump if not less or equal
Jump if not overflow
Jump if not parity
Jump if not sign
Jump if not zero
Jump if overflow
Jump if parity
Jump if parity even
Jump if parity odd
Jump if sign
Jump if zero
上なら(符号なし)
以上なら(符号なし)
下なら(符号なし)
以下なら(符号なし)
Carry Flag=1なら
イコールなら
大きいなら(符号付き)
大きいか同じなら(符号付き)
小さいなら(符号付き)
小さいか同じなら(符号付き)
上じゃないなら=以下なら(符号なし)
以上じゃないなら=下なら(符号なし)
下じゃないなら=以上なら(符号なし)
以下じゃないなら=上なら(符号なし)
Carry Flag=0 = CF=1じゃないなら
イコールじゃいなら
大きくないなら(符号付き)
大きくも同じでもないなら(符号付き)
小さくないなら(符号付き)
小さくも同じでもないなら(符号付き)
オーバーフローでないなら
Parity Flag=0 = PF=1じゃないなら
マイナスでないなら
ゼロじゃないなら
オーバーフローなら
Parity Flag=1なら
パリティが奇数(PF=1)なら
パリティが偶数(PF=0)
マイナスなら
ゼロなら
CF=0 and ZF=0
CF=0
CF=1
CF=1 and ZF=1
CF=1
ZF=1
ZF=0 and SF=OF
SF=OF
SF<>OF
ZF=1 or SF<>OF
CF=1 or ZF=1
CF=1
CF=0
CF=0 and ZF=0
CF=0
ZF=0
ZF=1 or SF<>OF
SF<>OF
SF=OF
ZF and SF=OF
OF=0
PF=0
SF=0
ZF=0
OF=1
PF=1
PF=1
PF=0
SF=1
ZF=1
  たくさんあって、ごちゃごちゃしていてわかりずらいかと思います。覚え方としては いくつかあります。英語で覚える人、フラグで覚える人。よく見ると同じものがいくつかあります。 例えば、「JAE」=「JNB」。意味で考えると、「Jump if above or equal=以上なら」と 「Jump if not below=下でないなら=以上なら」同じですね。フラグをみると両方「CF=0」 ならジャンプしますから、動作も同じです。アセンブラによってマシン語(2進数の羅列)に 変換されても同じです。これらは人間が意味と照らし合わせて覚えやすいように、 同じ命令を複数用意してあるのです。

  ところで、何が大きかったり、小さかったりするのでしょう? これは 「CMP」命令と関係しているのです。 「CMP AX,BX」で、AXの方が○○だったらジャンプするわけです。 「CMP AX,BX」の次に「JA 100h」とあったら、 AXが上の時にジャンプします。

  さて次に不思議なのが、「JZ」と「JE」。「Jump if Zero」と「Jump if equal」。 フラグはどちらも「ZF=1」の時にジャンプする。なんで「ゼロ」と「イコール」が 同じ意味なんでしょうか? 「CMP」命令を考えると「イコール」はわかりますよね。 前にも書きましたが「CMP」は「SUB」と同じように引き算をして、そのフラグだけを 結果に残す命令なのです。したがって、引き算の結果0になれば、「ゼロ」と考え られますし、同じ値なら(ようするに引いた結果0)「イコール」と考えられます。

  まぁ、よく使うものはそのうち自然と覚えてくるので、別に覚える必要は ないでしょう。


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