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

あなたは

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

アセンブラ入門内検索

目次
アセンブラトップ
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-1.無条件分岐

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



条件分岐



4-1.無条件分岐

  無条件分岐とは、C言語やN88-BASICで言うgotoで、他の処理に移行する命令である。
JMP	DEST

   動作 :DESTが示す番地に処理を移行する
  DEST : 相対オフセット、即値、メモリ、レジスタ
  影響を受けるフラグ : なし

  DESTが示す番地に処理を移行します。一般には処理を移行したい場所にラベルを つけて、そのラベルにジャンプするようにします。
	jmp	FUNC2		;FUNC2に処理を移行する
FUNC1:
	  :
	  :
FUNC2:
	  :
	  :
	mov	ax,4c00h
	int	21h
	jmp	ax		;AXの内容の番地にジャンプする(near jumpの例)
	jmp	0		;CSセグメントの0番地にジャンプする(near jumpの例)
	jmp	ds:100h		;ds:100h番地の内容の番地にジャンプする(near jumpの例)
	jmp	100h:200h		;100h:200h番地にジャンプする(far jumpの例)
	jmp	far [ds:100h]		;ds:100h番地の内容にジャンプする(far jumpの例)
  実は、jmp命令には3種類あります。「short jmp」と「near jmp」、「far jmp」 である。

short jmp
現在のアドレスの-128〜+127番地以内へのジャンプで、即値を示した場合である。 shortジャンプであるとわかっている場合には「jmp short FUNC1」と 記述することによって、アセンブラ(コンパイラ)によっては、実行形式プログラム の大きさが小さくなる場合がある。
near jmp
同じセグメント内でのジャンプ。上の例では「jmp ax」「jmp 0」「jmp ds:100h」が 該当する。ほとんどのアセンブラではこれがデフォルトになっているが、特に 「near jmp」であることを明記したい場合は「jmp near FUNC1」のように 書く。
far jmp
異なるセグメントへのジャンプ。例えば、 「jmp far 100h:200h」、「jmp far [ds:100h]」のように書く。 前者ではセグメント100hの200h番地にジャンプする。後者は、ds:100h の内容4バイトを読み取り、上2バイトがオフセット、下2バイトがセグメントとしてジャンプする。例えばDS:100hが1234h、ds:102h番地の内容が5678hの場合、セグメントが5678hの 1234h番地にジャンプする。


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