常見(jiàn)匯編命令英文縮寫(xiě)
常見(jiàn)匯編命令英文縮寫(xiě)
寄存器類(register):
通用寄存器: EAX、EBX、ECX、EDX:是ax,bx,cx,dx的延伸,各為32位
AH&AL=AX(accumulator) :累加寄存器
BH&BL=BX(base) :基址寄存器
CH&CL=CX(count) :計(jì)數(shù)寄存器
DH&DL=DX(data) :數(shù)據(jù)寄存器
特殊功能寄存器: ESP、EBP、ESI、EDI、EIP:是sp,bp,si,di,ip的延伸,32位
SP(Stack Pointer) :堆棧指針寄存器
BP(Base Pointer) :基址指針寄存器
SI(Source Index) :源變址寄存器
DI(Destination Index) :目的變址寄存器
IP(Instruction Pointer) :指令指針寄存器
段寄存器:
CS(Code Segment) :代碼段寄存器
DS(Data Segment) :數(shù)據(jù)段寄存器
SS(Stack Segment) :堆棧段寄存器
ES(Extra Segment) :附加段寄存器
標(biāo)志寄存器
FR--flag register(程序狀態(tài)字PSW--program status word),PSW常用的標(biāo)志有:
標(biāo)志 值為1時(shí)的標(biāo)記 值為0時(shí)的標(biāo)記 說(shuō)明
OF(overflow flag) OV(overflow) NV(not overflow) 溢出標(biāo)志 操作數(shù)超出機(jī)器能表示的范圍表示溢出.溢出時(shí)為1.
ZF(zero flag) ZR(zero) NZ(not zero) 零標(biāo)志 運(yùn)算結(jié)果等于0時(shí)為1.否則為0.
PF(parity flag) PE(parity even) PO(parity odd) 奇偶標(biāo)志 運(yùn)算結(jié)果操作數(shù)位為1的個(gè)數(shù)為偶數(shù)個(gè)時(shí)為1.否則為0.
CF(carry flag) CY(carried) NC(not carried) 進(jìn)位標(biāo)志 最高有效位產(chǎn)生進(jìn)位時(shí)為1.否則為0.
DF(direction flag) DN(down) UP(up) 方向標(biāo)志 用于串處理.DF=1時(shí).每次操作后使SI和DI減小.DF=0時(shí)則增大.
SF(sign flag) NG(negtive) PL(plus) 符號(hào)標(biāo)志 記錄運(yùn)算結(jié)果的符號(hào).結(jié)果負(fù)時(shí)為1.
TF(trap flag) 陷阱標(biāo)志 用于調(diào)試單步操作.
IF(interrupt flag) 中斷標(biāo)志 IF=1時(shí).允許CPU響應(yīng)可屏蔽中斷.否則關(guān)閉中斷.
AF(auxiliary flag) 輔助進(jìn)位標(biāo)志 運(yùn)算時(shí).第3位向第4位產(chǎn)生進(jìn)位時(shí)為1.否則為0.
一、命令類
1.通用數(shù)據(jù)傳送指令.
MOV----> move 傳送字或字節(jié)
MOVSX---->extended move with sign data 先符號(hào)擴(kuò)展,再傳送
MOVZX---->extended move with zero data 先零擴(kuò)展,再傳送
PUSH---->push 把字壓入堆棧
POP---->pop 把字彈出堆棧
PUSHA---->push all 把AX,CX,DX,BX,SP,BP,SI,DI依次壓入堆棧
POPA---->pop all 把DI,SI,BP,SP,BX,DX,CX,AX依次彈出堆棧
PUSHAD---->push all data 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次壓入堆棧
POPAD---->pop all data 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次彈出堆棧
BSWAP---->byte swap 交換32位寄存器里字節(jié)的順序
XCHG---->exchange 交換字或字節(jié).(至少有一個(gè)操作數(shù)為寄存器,段寄存器不可作為操作數(shù))
CMPXCHG---->compare and change 比較并交換操作數(shù).第二個(gè)操作數(shù)為累加器AL/AX/EAX
XADD---->exchange and add 先交換再累加.(結(jié)果在第一個(gè)操作數(shù)里)
XLAT---->translate 字節(jié)查表轉(zhuǎn)換
2.輸入輸出端口傳送指令.
IN---->input I/O端口輸入.(語(yǔ)法: IN 累加器,{ 端口號(hào)│DX })
OUT---->output I/O端口輸出.(語(yǔ)法: OUT { 端口號(hào)│DX },累加器)
3.目的地址傳送指令.
LEA---->load effective address 裝入有效地址
LDS---->load DS 傳送目標(biāo)指針,把指針內(nèi)容裝入DS
LES---->load ES 傳送目標(biāo)指針,把指針內(nèi)容裝入ES
LFS---->load FS 傳送目標(biāo)指針,把指針內(nèi)容裝入FS
LGS---->load GS 傳送目標(biāo)指針,把指針內(nèi)容裝入GS
LSS---->load SS 傳送目標(biāo)指針,把指針內(nèi)容裝入SS
4.標(biāo)志傳送指令.
LAHF---->load AH from flag 標(biāo)志寄存器傳送,把標(biāo)志裝入AH.
SAHF---->save AH to flag 標(biāo)志寄存器傳送,把AH內(nèi)容裝入標(biāo)志寄存器
PUSHF---->push flag 標(biāo)志入棧
POPF---->pop flag 標(biāo)志出棧
PUSHD---->push dflag 32位標(biāo)志入棧
POPD---->pop dflag 32位標(biāo)志出棧
二、算術(shù)運(yùn)算指令
ADD---->add 加法
ADC---->add with carry 帶進(jìn)位加法
INC---->increase 1 加1
AAA---->ascii add with adjust 加法的ASCII碼調(diào)整
DAA---->decimal add with adjust 加法的十進(jìn)制調(diào)整
SUB---->substract 減法
SBB---->substract with borrow 帶借位減法
DEC---->decrease 1 減1
NEC---->negative 求反(以 0 減之)
CMP---->compare 比較.兩操作數(shù)作減法,僅修改標(biāo)志位,不回送結(jié)果
AAS---->ascii adjust on substract 減法的ASCII碼調(diào)整.
DAS---->decimal adjust on substract 減法的十進(jìn)制調(diào)整
MUL---->multiplication 無(wú)符號(hào)乘法,結(jié)果回送AH和AL(字節(jié)運(yùn)算),或DX和AX(字運(yùn)算)
IMUL---->integer multiplication 整數(shù)乘法,結(jié)果回送AH和AL(字節(jié)運(yùn)算),或DX和AX(字運(yùn)算)
AAM---->ascii adjust on multiplication 乘法的ASCII碼調(diào)整
DIV---->divide 無(wú)符號(hào)除法
IDIV---->integer divide 整數(shù)除法,商回送AL余數(shù)回送AH,字節(jié)運(yùn)算,商回送AX余數(shù)回送DX,字運(yùn)算
AAD---->ascii adjust on divide 除法的ASCII碼調(diào)整
CBW---->change byte to word 字節(jié)轉(zhuǎn)換為字.(把AL中字節(jié)的符號(hào)擴(kuò)展到AH中去)
CWD---->change word to double word 字轉(zhuǎn)換為雙字.(把AX中的字的符號(hào)擴(kuò)展到DX中去)
CWDE---->change word to double word with sign to EAX字轉(zhuǎn)換為雙字.(把AX中的字符號(hào)擴(kuò)展到EAX中去)
CDQ---->change double word to quadrate word 雙字?jǐn)U展.把EAX中的字的符號(hào)擴(kuò)展到EDX
三、邏輯運(yùn)算指令
AND---->and 與運(yùn)算
OR---->or 或運(yùn)算
XOR---->xor 異或運(yùn)算
NOT---->not 取反
TEST---->test 測(cè)試.(兩操作數(shù)作與運(yùn)算,僅修改標(biāo)志位,不回送結(jié)果)
SHL---->shift left 邏輯左移
SAL---->arithmatic shift left 算術(shù)左移.(=SHL)
SHR---->shift right 邏輯右移
SAR---->arithmatic shift right 算術(shù)右移.(=SHR)
ROL---->rotate left 循環(huán)左移
ROR---->rotate right 循環(huán)右移
RCL---->rotate left with carry 通過(guò)進(jìn)位的循環(huán)左移
RCR---->rotate right with carry 通過(guò)進(jìn)位的循環(huán)右移
四、串指令
MOVS---->move string 串傳送,MOVSB傳送字符、MOVSW傳送字、MOVSD傳送雙字
CMPS---->compare string 串比較,CMPSB比較字符、CMPSW比較字
SCAS---->scan string 串掃描,把AL或AX的內(nèi)容與目標(biāo)串作比較,比較結(jié)果反映在標(biāo)志位
LODS---->load string 裝入串,把源串中的元素(字或字節(jié))逐一裝入AL或AX中,LODSB傳送字符、LODSW傳送字、LODSD傳送雙字
STOS---->store string 保存串,是LODS的逆過(guò)程
REP---->repeat 當(dāng)CX/ECX<>0時(shí)重復(fù)
REPE---->repeat when equal 當(dāng)比較結(jié)果相等,且CX/ECX<>0時(shí)重復(fù)
REPZ---->repeat when zero flag 當(dāng)ZF=1,且CX/ECX<>0時(shí)重復(fù)
REPNE---->repeat when not equal 當(dāng)比較結(jié)果不相等,且CX/ECX<>0時(shí)重復(fù)
REPNZ---->repeat when zero flag 當(dāng)ZF=0,且CX/ECX<>0時(shí)重復(fù)
REPC---->repeat when carry flag 當(dāng)CF=1且CX/ECX<>0時(shí)重復(fù)
REPNC---->repeat when not carry flag 當(dāng)CF=0且CX/ECX<>0時(shí)重復(fù)
五、程序轉(zhuǎn)移指令
1>無(wú)條件轉(zhuǎn)移指令(長(zhǎng)轉(zhuǎn)移)
JMP---->jump 無(wú)條件轉(zhuǎn)移指令
CALL---->call 過(guò)程調(diào)用
RET---->return 過(guò)程返回
RETF---->return far 過(guò)程返回
2>條件轉(zhuǎn)移指令(短轉(zhuǎn)移,-128到+127的距離內(nèi)) :當(dāng)且僅當(dāng)(SF XOR OF)=1時(shí),OP1<OP2
JAE---->jump when above or equal 不小于時(shí)轉(zhuǎn)移
JNB---->jump when not below 不小于時(shí)轉(zhuǎn)移
JB---->jump when below 小于時(shí)轉(zhuǎn)移
JNAE---->jump when not above or equal 小于時(shí)轉(zhuǎn)移
JBE---->jump when below or equal 小于等于時(shí)轉(zhuǎn)移
JNA---->jump when not above 小于等于時(shí)轉(zhuǎn)移
以上條目,測(cè)試無(wú)符號(hào)整數(shù)運(yùn)算的結(jié)果(標(biāo)志C和Z)
JG---->jump when greater 大于轉(zhuǎn)移
JNLE---->jump when not less or equal 大于轉(zhuǎn)移
JGE---->jump when greater or equal 大于等于轉(zhuǎn)移
JNL---->jump when not less 大于等于轉(zhuǎn)移
JL---->jump when less 小于轉(zhuǎn)移
JNGE---->jump when not greater or equal 小于轉(zhuǎn)移
JLE---->jump when less or equal 小于等于轉(zhuǎn)移
JNG---->jump when not greater 小于等于轉(zhuǎn)移
以上條目,測(cè)試帶符號(hào)整數(shù)運(yùn)算的結(jié)果(標(biāo)志S,O和Z).
JE---->jump when equal 等于轉(zhuǎn)移
JZ---->jump when has zero flag 結(jié)果為0轉(zhuǎn)移
JNE---->jump when not equal 不等于轉(zhuǎn)移
JNZ---->jump when not has zero flag 結(jié)果不為0轉(zhuǎn)移
JC---->jump when has carry flag 有進(jìn)位轉(zhuǎn)移
JNC---->jump when not has carry flag 無(wú)進(jìn)位轉(zhuǎn)移
JNO---->jump when not has overflow flag 不溢出時(shí)轉(zhuǎn)移
JNP---->jump when not has parity flag 奇偶性為奇數(shù)時(shí)轉(zhuǎn)移
JPO---->jump when parity flag is odd 奇偶性為奇數(shù)時(shí)轉(zhuǎn)移
JNS---->jump when not has sign flag 符號(hào)位為0時(shí)轉(zhuǎn)移
JO---->jump when has overflow flag 溢出時(shí)轉(zhuǎn)移
JP---->jump when has parity flag 奇偶性為偶數(shù)時(shí)轉(zhuǎn)移
JPE---->jump when parity flag is even 奇偶性為偶數(shù)時(shí)轉(zhuǎn)移
JS---->jump when has sign flag 符號(hào)位為0時(shí)轉(zhuǎn)移
3>循環(huán)控制指令(短轉(zhuǎn)移)
LOOP---->loop CX不為零時(shí)循環(huán)
LOOPE---->loop equal CX不為零且結(jié)果相等時(shí)循環(huán)(相等時(shí)Z=1)
LOOPZ---->loop zero CX不為零且標(biāo)志Z=1時(shí)循環(huán)
LOOPNE---->loop not equal CX不為零且結(jié)果不相等時(shí)循環(huán)(相等時(shí)Z=0)
LOOPNZ---->loop not zero CX不為零且標(biāo)志Z=0時(shí)循環(huán)
JCXZ---->jump when CX is zero CX為零時(shí)轉(zhuǎn)移
JECXZ---->jump when ECX is zero ECX為零時(shí)轉(zhuǎn)移
4>中斷指令
INT---->interrupt ECX為零時(shí)轉(zhuǎn)移
INTO---->overflow interrupt 溢出中斷
IRET---->interrupt return 中斷返回
5>處理器控制指令
HLT---->halt 處理器暫停,直到出現(xiàn)中斷或復(fù)位信號(hào)才繼續(xù)
WAIT---->wait 當(dāng)芯片引線TEST為高電平時(shí)使CPU進(jìn)入等待狀態(tài)
ESC---->escape 轉(zhuǎn)換到外處理器
LOCK---->lock 封鎖總線
NOP---->no operation 空操作
STC---->set carry 置進(jìn)位標(biāo)識(shí)位
CLC---->clear carry 清進(jìn)位標(biāo)識(shí)位
CMC---->carry make change 進(jìn)位標(biāo)識(shí)取反
STD---->set direction 置方向標(biāo)識(shí)位
CLD---->clear direction 清方向標(biāo)識(shí)位
STI---->set interrupt 置中斷允許位
CLI---->clear interrupt 清中斷允許位
六、偽指令
DW---->definw word 定義字(2字節(jié))
PROC---->procedure 定義過(guò)程
ENDP---->end of procedure 過(guò)程結(jié)束
SEGMENT---->segment 定義段
ASSUME---->assume 建立段寄存器尋址
ENDS---->end segment 段結(jié)束
END---->end 程序結(jié)束