有這個版,對於kernel design 有正面的幫助我就提供一些組語指令集給各位先進參考
組合語言指令集 :
資料搬移指令 (Data transfer instructions)
mov
movsz
movzx
xchg
整數運算指令
加法
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
|