アセンブリ言語は、CPUの命令セットアーキテクチャ(ISA)に基づいています。
以下は、x86アーキテクチャにおける基本的なアセンブラ命令の一覧です。
これらの命令は、データ転送、算術演算、論理演算、制御フローなど、基本的な操作を行うために使用されます。
データ転送命令
- MOV: データを転送する
MOV destination, source- 例:
MOV AX, BX(BXの内容をAXにコピー)
- PUSH: スタックにデータをプッシュする
PUSH source- 例:
PUSH AX(AXの内容をスタックにプッシュ)
- POP: スタックからデータをポップする
POP destination- 例:
POP AX(スタックのトップの内容をAXにポップ)
- XCHG: データを交換する
XCHG destination, source- 例:
XCHG AX, BX(AXとBXの内容を交換)
算術演算命令
- ADD: 加算
ADD destination, source- 例:
ADD AX, BX(AXにBXを加算)
- SUB: 減算
SUB destination, source- 例:
SUB AX, BX(AXからBXを減算)
- MUL: 無符号乗算
MUL source- 例:
MUL BX(AXとBXを無符号で乗算)
- IMUL: 符号付き乗算
IMUL source- 例:
IMUL BX(AXとBXを符号付きで乗算)
- DIV: 無符号除算
DIV source- 例:
DIV BX(AXをBXで無符号で除算)
- IDIV: 符号付き除算
IDIV source- 例:
IDIV BX(AXをBXで符号付きで除算)
- INC: インクリメント
INC destination- 例:
INC AX(AXを1増加)
- DEC: デクリメント
DEC destination- 例:
DEC AX(AXを1減少)
論理演算命令
- AND: 論理積
AND destination, source- 例:
AND AX, BX(AXとBXの論理積)
- OR: 論理和
OR destination, source- 例:
OR AX, BX(AXとBXの論理和)
- XOR: 排他的論理和
XOR destination, source- 例:
XOR AX, BX(AXとBXの排他的論理和)
- NOT: 論理否定
NOT destination- 例:
NOT AX(AXのビットごとの否定)
シフトおよびローテート命令
- SHL: 左シフト
SHL destination, count- 例:
SHL AX, 1(AXを1ビット左シフト)
- SHR: 右シフト
SHR destination, count- 例:
SHR AX, 1(AXを1ビット右シフト)
- SAL: 算術左シフト
SAL destination, count- 例:
SAL AX, 1(AXを1ビット左シフト)
- SAR: 算術右シフト
SAR destination, count- 例:
SAR AX, 1(AXを1ビット右シフト)
- ROL: 左ローテート
ROL destination, count- 例:
ROL AX, 1(AXを1ビット左ローテート)
- ROR: 右ローテート
ROR destination, count- 例:
ROR AX, 1(AXを1ビット右ローテート)
制御フロー命令
- JMP: 無条件ジャンプ
JMP label- 例:
JMP start(ラベルstartにジャンプ)
- JE/JZ: 条件ジャンプ(等しい場合/ゼロの場合)
JE labelまたはJZ label- 例:
JE equal(等しい場合、ラベルequalにジャンプ)
- JNE/JNZ: 条件ジャンプ(等しくない場合/ゼロでない場合)
JNE labelまたはJNZ label- 例:
JNE notequal(等しくない場合、ラベルnotequalにジャンプ)
- JG/JNLE: 条件ジャンプ(より大きい場合)
JG labelまたはJNLE label- 例:
JG greater(より大きい場合、ラベルgreaterにジャンプ)
- JL/JNGE: 条件ジャンプ(より小さい場合)
JL labelまたはJNGE label- 例:
JL less(より小さい場合、ラベルlessにジャンプ)
- JGE/JNL: 条件ジャンプ(以上の場合)
JGE labelまたはJNL label- 例:
JGE gequal(以上の場合、ラベルgequalにジャンプ)
- JLE/JNG: 条件ジャンプ(以下の場合)
JLE labelまたはJNG label- 例:
JLE lequal(以下の場合、ラベルlequalにジャンプ)
- CALL: サブルーチンの呼び出し
CALL label- 例:
CALL myFunction(ラベルmyFunctionを呼び出し)
- RET: サブルーチンからの戻り
RET- 例:
RET(サブルーチンから戻る)
その他の命令
- NOP: No Operation(何もしない命令)
NOP- 例:
NOP(何もしない)
- HLT: CPUを停止
HLT- 例:
HLT(CPUを停止)
まとめ
アセンブリ言語の命令は、CPUの命令セットに基づいており、上記の命令はx86アーキテクチャに特有のものです。
各命令は、CPUが直接実行できる特定の操作を表しています。
アセンブリ言語を学ぶことで、コンピュータのハードウェアとソフトウェアの動作をより深く理解することができます。
スポンサーリンク