アセンブリ言語

アセンブリ言語と機械語の対応表

アセンブリ言語と機械語は、低レベルのプログラミング言語であり、CPUの命令セットアーキテクチャ(ISA)に依存します。アセンブリ言語は、人間が読みやすいニーモニック(命令名)を使い、機械語は0と1のビット列で表現されます。

以下に、x86アーキテクチャに基づくアセンブリ言語と機械語の対応表の例を示します。この表は、基本的な命令に対するもので、詳細は各CPUのマニュアルを参照してください。

x86アセンブリ言語と機械語の対応表

アセンブリ言語命令機械語 (16進)説明
MOV AX, BX89 D8BXの内容をAXにコピーする
ADD AX, BX01 D8AXにBXを加算する
SUB AX, BX29 D8AXからBXを減算する
MUL BXF7 E3AXとBXを乗算する
DIV BXF7 F3AXをBXで除算する
JMP 0x1234E9 34 12アドレス0x1234にジャンプする
CMP AX, BX39 D8AXとBXを比較する
JE 0x123474 12等しい場合にアドレス0x1234にジャンプする
JNE 0x123475 12等しくない場合にアドレス0x1234にジャンプする
PUSH AX50AXをスタックにプッシュする
POP AX58スタックからAXにポップする
CALL 0x1234E8 34 12サブルーチン0x1234を呼び出す
RETC3サブルーチンから戻る

アセンブリ言語と機械語の詳細な説明

MOV命令

  • アセンブリ: MOV AX, BX
  • 機械語: 89 D8
    • 89 は MOV命令のオペコード
    • D8 はレジスタペア(AXとBX)を表すオペランド

ADD命令

  • アセンブリ: ADD AX, BX
  • 機械語: 01 D8
    • 01 は ADD命令のオペコード
    • D8 はレジスタペア(AXとBX)を表すオペランド

SUB命令

  • アセンブリ: SUB AX, BX
  • 機械語: 29 D8
    • 29 は SUB命令のオペコード
    • D8 はレジスタペア(AXとBX)を表すオペランド

MUL命令

  • アセンブリ: MUL BX
  • 機械語: F7 E3
    • F7 は MUL命令のオペコード
    • E3 は BXを表すオペランド

DIV命令

  • アセンブリ: DIV BX
  • 機械語: F7 F3
    • F7 は DIV命令のオペコード
    • F3 は BXを表すオペランド

JMP命令

  • アセンブリ: JMP 0x1234
  • 機械語: E9 34 12
    • E9 は JMP命令のオペコード
    • 34 12 はジャンプ先アドレス0x1234をリトルエンディアン形式で表す

CMP命令

  • アセンブリ: CMP AX, BX
  • 機械語: 39 D8
    • 39 は CMP命令のオペコード
    • D8 はレジスタペア(AXとBX)を表すオペランド

条件ジャンプ命令

  • アセンブリ: JE 0x1234
  • 機械語: 74 12
    • 74 は JE (Jump if Equal) 命令のオペコード
    • 12 はジャンプ先アドレスオフセットを表す
  • アセンブリ: JNE 0x1234
  • 機械語: 75 12
    • 75 は JNE (Jump if Not Equal) 命令のオペコード
    • 12 はジャンプ先アドレスオフセットを表す

スタック操作命令

  • アセンブリ: PUSH AX
  • 機械語: 50
    • 50 は PUSH命令のオペコードとAXレジスタを表す
  • アセンブリ: POP AX
  • 機械語: 58
    • 58 は POP命令のオペコードとAXレジスタを表す

サブルーチン呼び出しと戻り

  • アセンブリ: CALL 0x1234
  • 機械語: E8 34 12
    • E8 は CALL命令のオペコード
    • 34 12 は呼び出し先アドレス0x1234をリトルエンディアン形式で表す
  • アセンブリ: RET
  • 機械語: C3
    • C3 は RET命令のオペコード

まとめ

アセンブリ言語と機械語の対応表は、CPUのアーキテクチャと命令セットによって異なります。上記の例は、x86アーキテクチャに基づく一般的な命令の対応表です。

実際の開発では、CPUのマニュアルやリファレンスガイドを参照して、各命令の詳細なオペコードとその使用方法を確認することが重要です。

スポンサーリンク

-アセンブリ言語