x86組合語言指令集

2022-07-25 19:54:08 字數 3895 閱讀 6313

一、資料傳輸指令

8088 彙編跳轉

cmp a,b 比較a與b

mov a,b 把b的值送給a

ret 返回主程式

nop 無作用,英文「no operation」的簡寫,意思是「do nothing」

call 呼叫子程式

je 或jz 若相等則跳

jne或jnz 若不相等則跳

jmp 無條件跳

jb 若小於則跳

ja 若大於則跳

jg 若大於則跳

jge 若大於等於則跳

jl 若小於則跳

jle 若小於等於則跳

pop 出棧

push 壓棧

mov功能: 把源運算元送給目的運算元

語法: mov 目的運算元,源運算元

格式: mov r1,r2

mov r,m

mov m,r

mov r,data

xchg

功能: 交換兩個運算元的資料

語法: xchg

格式: xchg r1,r2 xchg m,r xchg r,m

push,pop

功能: 把運算元壓入或取出堆疊

語法: push 運算元 pop 運算元

格式: push r push m push data pop r pop m

pushf,popf,pusha,popa

功能: 堆疊指令群

格式: pushf popf pusha popa

lea,lds,les

功能: 取位址至暫存器

語法: lea r,m lds r,m les r,m

xlat(xlatb)

功能: 查表指令

語法: xlat xlat m

算數運算指令

add,adc

功能: 加法指令

語法: add op1,op2 adc op1,op2

格式: add r1,r2 add r,m add m,r add r,data

影響標誌: c,p,a,z,s,o

sub,sbb

功能:減法指令

語法: sub op1,op2 sbb op1,op2

格式: sub r1,r2 sub r,m sub m,r sub r,data sub m,data

影響標誌: c,p,a,z,s,o

inc,dec

功能: 把op的值加一或減一

語法: inc op dec op

格式: inc r/m dec r/m

影響標誌: p,a,z,s,o

neg功能: 將op的符號反相(取二進位制補碼)

語法: neg op

格式: neg r/m

影響標誌: c,p,a,z,s,o

mul,imul

功能: 乘法指令

語法: mul op imul op

格式: mul r/m imul r/m

影響標誌: c,p,a,z,s,o(僅imul會影響s標誌)

div,idiv

功能:除法指令

語法: div op idiv op

格式: div r/m idiv r/m

cbw,cwd

功能: 有符號數擴充套件指令

語法: cbw cwd

aaa,aas,aam,aad

功能: 非壓bcd碼運算調整指令

語法: aaa aas aam aad

影響標誌: a,c(aaa,aas) s,z,p(aam,aad)

daa,das

功能: 壓縮bcd碼調整指令

語法: daa das

影響標誌: c,p,a,z,s

位運算指令集

and,or,xor,not,test

功能: 執行bit與bit之間的邏輯運算

語法: and r/m,r/m/data or r/m,r/m/data xor r/m,r/m/data test r/m,r/m/data not r/m

影響標誌: c,o,p,z,s(其中c與o兩個標誌會被設為0) not指令不影響任何標誌位

shr,shl,sar,sal

功能: 移位指令

語法: shr r/m,data/cl shl r/m,data/cl sar r/m,data/cl sal r/m,data/cl

影響標誌: c,p,z,s,o

ror,rol,rcr,rcl

功能: 迴圈移位指令

語法: ror r/m,data/cl rol r/m,data/cl rcr r/m,data/cl rcl r/m,data/cl

影響標誌: c,p,z,s,o

程式流程控制指令集

clc,stc,cmc

功能: 設定進製標誌

語法: clc stc cmc

標誌位: c

cld,std

功能: 設定方向標誌

語法: cld std

標誌位: d

cli,sti

功能: 設定中斷標誌

語法: cli sti

標誌位: i

cmp功能: 比較op1與op2的值

語法: cmp r/m,r/m/data

標誌位: c,p,a,z,o

jmp功能: 跳往指定位址執行

語法: jmp 位址

jxx功能: 當特定條件成立則跳往指定位址執行

語法: jxx 位址

注:a: above,當c=0,z=0時成立

b: below,當c=1時成立

c: carry,當弁時成立 cxz: cx暫存器的值為0(zero)時成立

e: equal,當z=1時成立

g: greater(大於),當z=0且s=0時成立

l: less(小於),當s不為零時成立

n: not(相反條件),需和其它符號配合使用

o: overflow,o=1時成立

p: parity,p=1時成立

pe: parity even,p=1時成立

po: parity odd,p=0時成立

s: sign,s=1時成立

z: zero,z=1時成立

loop

功能: 迴圈指令集

語法: loop 位址

loope(z)

位址 loopne(z) 位址

標誌位: 無

call,ret

功能: 子程式呼叫,返回指令

語法: call 位址 ret ret n

標誌位: 無

int,iret

功能: 中斷呼叫及返回指令

語法: int n iret

標誌位: 在執行int時,cpu會自動將標誌暫存器的值入棧,在執行iret時則會將堆疊中的標誌值彈回暫存器

字串操作指令集

movsb,movsw,movsd

功能: 字串傳送指令

語法: movsb movsw movsd

標誌位: 無

cmpsb,cmpsw,cmpsd

功能: 字串比較指令

語法: cmpsb cmpsw cmpsd

標誌位: c,p,z,s,o

scasb,scasw

功能: 字串搜尋指令

語法: scasb scasw

標誌位: c,p,z,s,o

lodsb,lodsw,stosb,stosw

功能: 字串載入或存貯指令

語法: lodsb lodsw stosb stosw

標誌位: 無

rep,repe,repne

功能: 重複字首指令集

語法: rep 指令s repe 指令s repne 指令s

標誌位: 依指令s而定

逆向 x86彙編串操作指令集合

rep cx 0,重複執行字串指令 repz repe cx 0,且zf 1,相同時,重複執行字串指令 repnz repne cx 0,且zf 0,不同時,重複執行字串指令 cld 置df 0,edi std 置df 1,edi 1 movs movsb movsw movsd 1 從esi拷貝資...

8086組合語言指令集

mov 功能 把源運算元送給目的運算元語法 mov 目的運算元,源運算元格式 mov r1,r2 mov r,m mov m,r movr,data xchg 功能 交換兩個運算元的資料語法 xchg 格.8086 8088組合語言指令集 資料傳送指令集 mov 功能 把源運算元送給目的運算元 語法...

X86彙編指令詳解

x86彙編基本分為七大體系 分別是 1 資料傳送指令 2 算術運算指令 3 邏輯運算指令 4 串操作指令 5 控制轉移指令 6 處理器控制指令 7 保護方式指令 先介紹資料傳送指令集 1 資料傳送指令 1.mov 格式 mov destination,source 功能 將s ource中的資料傳送...