| 
 有這個版,對於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 
 
  |