J.J. Huang   2019-07-03   x86組合語言   瀏覽次數:次  

x86組合語言 - 第三章 | 基本指令集

📑 目錄
  1. 資料搬移指令 (Data transfer instructions)
  2. 整數運算指令
    1. 加法
    2. 減法
    3. 乘法
    4. 除法
  3. 邏輯運算指令
  4. 位元位移指令
  5. 程式流程控制
    1. 跳越指令
    2. 迴圈控制指令
    3. 副程式指令
    4. 中斷指令(Interrupt Instruction)
  6. 旗標控制相關指令
    1. 中斷標誌位
    2. 進位標誌位
  7. 字串處理相關指令
  8. 無運算指令

這邊要介紹一下組合語言的基本指令,基本上看過有個印象稍微了解。

資料搬移指令 (Data transfer instructions)

  • mov
    x86組合語言 - 第三章 - 圖 1 (01)

  • movsz
    x86組合語言 - 第三章 - 圖 2 (02)​‌‌‌‌​​​​​‌‌‌​​​​​‌‌​‌‌​​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​​​​​​‌‌​​​‌​​‌‌‌​​‌​​‌‌​​​​​​‌‌​‌‌‌​​‌‌​​​​​​‌‌​​‌‌​​‌​‌‌​‌​‌‌‌‌​​​​​‌‌‌​​​​​‌‌​‌‌​​​‌​‌‌​‌​​‌‌​​‌‌

  • movzx
    x86組合語言 - 第三章 - 圖 3 (03)

  • xchg
    x86組合語言 - 第三章 - 圖 4 (04)

整數運算指令

加法

  • add:加
  • adc:加 (含進位)
  • inc:加1

減法

  • sub:減
  • sbb:減 (含借位)
  • dec:減1

乘法

  • mul:乘 (無號數)
  • imul:乘 (有號數)

除法

  • div:除 (無號數)
  • idiv:除 (有號數)

邏輯運算指令

  • and
  • or
  • xor
  • not

位元位移指令


程式流程控制

跳越指令

無條件跳越

  • jmp

無號數運算(比較)後使用的條件跳越指令

指令 意義 示意 條件
je 若等於則跳越 x = y ZF=1
jne 若不等於則跳越 x≠y ZF=0
ja
jnbe
若高於則跳越
若不低於則跳越
x > y CF=0且ZF=0
jae
jnb
若高於或等於則跳越
若不低於或等於則跳越
x≧y CF=0
jb
jnae
若低於則跳越
若不高於或等於則跳越
x < y CF=1
jbe
jna
若低於或等於則跳越
若不高於則跳越
x≦y CF=1或ZF=1

有號數運算(比較)後使用的條件跳越指令

指令 意義 示意 條件
je 若等於則跳越 x = y ZF=1
jne 若不等於則跳越 x≠y ZF=0
jg
jnle
若大於則跳越
若不低於或等於則跳越
x > y ZF=0且SF=OF
jge
jnl
若高於於或等於則跳越
若不低於則跳越
x≧y SF=OF
jl
jngl
若低於則跳越
若不大於或等於則跳越
x < y SF≠OF
jle
jng
若低於或等於則跳越
若不大於則跳越
x≦y ZF=1或SF≠OF

依旗號狀態判斷的條件跳越指令

指令 意義 條件
jc 若進位則跳越 CF=1
jnc 若無進位則跳越 CF=0
js 若為負數則跳越 SF=1
jns 若為正數則跳越 SF=0
jz 若等於0則跳越 ZF=1
jnz 若不等於0則跳越 ZF=0
jp 若同位則跳越 PF=1
jnp 若沒有同位則跳越 PF=0
jpe 若偶同位則跳越 PF=1
jpo 若奇同位則跳越 PF=0
jo 若溢位則跳越 OF=1
jno 若沒有溢位則跳越 OF=0

迴圈控制指令

  • loop
  • loope
  • loopz
  • loopne
  • loopnz

副程式指令

  • call:呼叫副程式使用
  • ret:自副程式返回

中斷指令(Interrupt Instruction)

  • int:進入中斷處理程式
  • into
  • iret:自中斷處理程式中返回

旗標控制相關指令

中斷標誌位

  • cli : 清中斷允許
  • sti : 置中斷允許

進位標誌位

  • clc : 清進位標誌位
  • stc : 置進位標誌位
  • cmc : 進位標誌位取反

字串處理相關指令


無運算指令

  • nop

註:以上參考了
X86匯編語言/基本指令集​‌‌‌‌​​​​​‌‌‌​​​​​‌‌​‌‌​​​‌​‌‌​‌​​‌‌​​‌​​​‌‌​​​​​​‌‌​​​‌​​‌‌‌​​‌​​‌‌​​​​​​‌‌​‌‌‌​​‌‌​​​​​​‌‌​​‌‌​​‌​‌‌​‌​‌‌‌‌​​​​​‌‌‌​​​​​‌‌​‌‌​​​‌​‌‌​‌​​‌‌​​‌‌