資料傳輸類指令主要包括資料傳送、資料交換、堆疊操作、查表轉換、位址傳送、標誌位傳送、i/o資料傳送指令。這類指令的主要特點是大部分指令操作完成後,對fr中的標誌位不產生影響。它們在儲存器和暫存器、暫存器和輸入輸出埠之間傳送資料。
資料傳送指令
mov:傳送字或位元組。
movsx:先符號擴充套件,再傳送。
movzx:先零擴充套件,再傳送。
push:把字壓入堆疊。
pop: 把字彈出堆疊。
pusha: 把ax,cx,dx,bx,sp,bp,si,di依次壓入堆疊。
popa: 把di,si,bp,sp,bx,dx,cx,ax依次彈出堆疊。
pushad: 把eax,ecx,edx,ebx,esp,ebp,esi,edi依次壓入堆疊。
popad: 把edi,esi,ebp,esp,ebx,edx,ecx,eax依次彈出堆疊。
bswap: 交換32位暫存器裡位元組的順序。
xchg: 交換字或位元組。( 至少有乙個運算元為暫存器,段暫存器不可作為運算元)
cmpxchg: 比較並交換運算元。(第二個運算元必須為累加器al/ax/eax)
xadd: 先交換再累加。( 結果在第乙個運算元裡 )
xlat: 位元組查表轉換── bx 指向一張 256 位元組的表的起點,al 為表的索引值(0-255,即0-ffh); 返回 al 為查表結果 ( [bx+al]->al)
輸入輸出埠傳送指令標誌傳送指令
lahf:標誌暫存器傳送,把標誌裝入ah。
sahf: 標誌暫存器傳送,把ah內容裝入標誌暫存器。
pushf: 標誌入棧。
popf: 標誌出棧。
pushd: 32位標誌入棧。
popd: 32位標誌出棧。
算數運算類指令包括加減乘除、比較與調整指令。它們可進行8位、16位和32位的運算。參加運算的運算元可以說二進位制數和十進位制數(bcd碼),這些數可以是無符號數,也可以是帶符號數。算術運算指令的主要特點是執行結果影響標誌暫存器的狀態標誌位of、sf、zf、af、pf、cf。
add: 加法。
adc: 帶進製加法。
inc: 加 1。
aaa: 加法的ascii碼調整。
daa: 加法的十進位制調整。
sub: 減法。
sbb: 帶借位減法。
dec: 減 1。
neg: 取補。
cmp: 比較。(兩運算元作減法,僅修改標誌位,不回送結果)
aas: 減法的ascii碼調整。
das: 減法的十進位制調整。
mul: 無符號乘法。結果回送ah和al(位元組運算),或dx和ax(字運算)
imul: 整數乘法。結果回送ah和al(位元組運算),或dx和ax(字運算)
aam: 乘法的ascii碼調整。
div: 無符號除法:商回送al,餘數回送ah,(位元組運算);或商回送ax,餘數回送dx(字運算)
idiv: 整數除法:商回送al,餘數回送ah,(位元組運算);或商回送ax,餘數回送dx(字運算)
aad: 除法的ascii碼調整。
cbw: 位元組轉換為字。(把al中位元組的符號擴充套件到ah中去)
cwd: 字轉換為雙字。(把ax中的字的符號擴充套件到dx中去)
cwde: 字轉換為雙字。 (把ax中的字符號擴充套件到eax中去)
cdq: 雙字擴充套件。(把eax中的字的符號擴充套件到edx中去)
邏輯運算類指令分為邏輯運算指令和移位指令兩大類。
邏輯運算指令
and: 與運算。
or: 或運算。
xor: 異或運算。
not: 取反。
test: 測試。(兩運算元作與運算,僅修改標誌位,不回送結果)
移位指令
shl: 邏輯左移。
sal: 算術左移。(=shl)
shr: 邏輯右移。(每位右移,低位進 cf,高位補 0)
sar: 算術右移。(每位右移, 低位進 cf,高位不變)
rol: 迴圈左移。
ror: 迴圈右移。
rcl: 通過進製的迴圈左移。
rcr: 通過進製的迴圈右移。
以上八種移位指令,其移位次數可達255次。
移位一次時,可直接用操作碼,如:shl ax,1;移位》1次時,則由暫存器cl給出移位次數,如:mov cl,04;shl ax,cl。
串操作指令用於處理存放在儲存器中的資料串,有串傳送、串比較、串掃瞄、串裝入、串儲存。其中,僅有串比較和串掃瞄指令對標誌位of、sf、zf、af、pf、cf有影響。
ds:si ——源串段暫存器:源串變址。
es:di ——目標串段暫存器:目標串變址。
cx: 重複次數計數器。
al/ax: 掃瞄值。
d標誌: 0表示重複操作中si和di應自動增量;1表示應自動減量。
z標誌: 用來控制掃瞄或比較操作的結束。
movs: 串傳送。(movsb 傳送字元, movsw 傳送字, movsd 傳送雙字)
cmps: 串比較。(cmpsb 比較字元, cmpsw 比較字)
scas: 串掃瞄。把al或ax的內容與目標串作比較,比較結果反映在標誌位。
lods: 裝入串。把源串中的元素(字或位元組)逐一裝入al或ax中。(lodsb 傳送字元, lodsw 傳送字,lodsd 傳送雙字)
stos: 儲存串。是lods的逆過程。
rep: 當cx/ecx<>0時重複。
repe/repz: 當zf=1或比較結果相等,且cx/ecx<>0時重複。
repne/repnz: 當zf=0或比較結果不相等,且cx/ecx<>0時重複。
repc: 當cf=1且cx/ecx<>0時重複。
repnc: 當cf=0且cx/ecx<>0時重複。
控制轉移類指令包括無條件轉移指令、條件轉移指令、迴圈控制指令、中斷指令、子程式呼叫和返回指令。
無條件轉移指令
(長轉移)
jmp: 無條件轉移指令。
call: 過程呼叫。
ret/retf: 過程返回。
條件轉移指令
(短轉移,-128到+127的距離內;當且僅當(sf、xor、of)=1時,op1迴圈控制指令
(短轉移)
loop: cx不為零時迴圈。
loope/loopz: cx不為零且標誌z=1時迴圈。
loopne/loopnz: cx不為零且標誌z=0時迴圈。
jcxz: cx為零時轉移。
jecxz: ecx為零時轉移。
中斷指令
int: 中斷指令。
into: 溢位中斷。
iret: 中斷返回。
偽指令
db: 定義位元組(1位元組)
dw: 定義字(2位元組)
dd: 定義雙字(4位元組)
proc: 定義過程。
endp: 過程結束。
segment: 定義段。
assume: 建立段暫存器定址。
ends: 段結束。
end: 程式結束。
處理機控制指令
即標誌處理指令,處理機控制指令完成簡單的控制功能。
clc: (進製位置0指令)
cmc: (進製位求反指令)
clc: (進製位置為0指令)
stc: (進製位置為1指令)
cld: (方向標誌位置0指令)
std: (方向標誌位置1指令)
cli: (中斷標誌置0指令)
sti: (中斷標誌置1指令)
nop: (無操作)
hlt: (停機)
wait: (等待)
esc: (換碼)
lock: (封鎖)
mo彙編指令 彙編指令大全
一 資料傳輸指令 它們在存貯器和暫存器 暫存器和輸入輸出埠之間傳送資料.1.通用資料傳送指令.mov 傳送字或位元組.movsx 先符號擴充套件,再傳送.movzx 先零擴充套件,再傳送.push 把字壓入堆疊.pop 把字彈出堆疊.pusha 把ax,cx,dx,bx,sp,bp,si,di依次壓...
PBS常用指令合集
以下以任務名 job.pbs對應任務id 12341234為代表,提交者使用者名為user。1.基本指令 最常用 提交作業 qsub job.pbs 查詢全部作業 qstat 查詢個人作業 qstat u user 查詢單個作業 qstat 12341234 刪除執行中作業 qdel 1234123...
git操作指令合集
git,需要輸入使用者名稱和郵箱 git config global user.name your name git config global user.email email example.com 注意git config命令的 global 引數,用了這個引數,表示這台電腦上所有的 git倉...