打开主菜单

首頁 > 電腦科學與技術書架 > X86組合語言 > 基本指令集


目录

資料搬移指令 (Data transfer instructions编辑

整數運算指令编辑

加法编辑

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

減法编辑

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

乘法编辑

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

除法编辑

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

邏輯運算指令编辑

位元位移指令编辑

程式流程控制编辑

跳越指令编辑

無條件跳越编辑

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

指令 意義 條件
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

迴圈控制指令编辑

副程式指令编辑

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

中斷指令(Interrupt Instruction编辑

  • int : 進入中斷處理程式
  • into : 運算溢出,產生中斷
  • iret : 自中斷處理程式中返回

旗標控制相關指令编辑

中断标志位编辑

  • cli : 清中断允许
  • sti : 置中断允许

进位标志位编辑

  • clc : 清进位标志位
  • stc : 置进位标志位
  • cmc : 进位标志位取反

字串處理相關指令编辑

無運算指令编辑


  • 以下暫存
    mov:這是組語裡面最常見的指令,將數值記入暫存器或是將A暫存器的內涵值移入B暫存器等等.
    範例語法:  mov 目的,來源        <==將來源值移入目的暫存器
                 mov DX,[zzz]       <==將zzz變數內涵移入DX暫存器
                 mov EAX,14h        <==移14h值移入EAX
    int:呼叫中斷來處理之前暫存器內涵值所對應的工作.例如Linux是int 0x80.
    add:加
     sub:減
     mul:乘
     div:除