汇编语言指令整理
目录
一、通用数据传送指令集
MOV
功能:把源操作数送给目标操作数
用法:MOV 目标操作数,源操作数
格式:
MOV r1,r2 #把r2送给r1
MOV r,data
是否改变标志位:否
MOVSX
功能:
语法:
格式:
是否改变标志位:
MOVZX
功能:
语法:
格式:
是否改变标志位:
XCHG
功能:
语法:
格式:
是否改变标志位:
XADD
XLAT
PUSH,POP
功能:
语法:
格式:
是否改变标志位:
PUSHF,POPF,PUSHA,POPA
功能:
语法:
格式:
是否改变标志位:
XLAT(XLATB)
功能:
语法:
格式:
是否改变标志位:
CMPXCHG
功能:
语法:
格式:
是否改变标志位:
输入输出端口传送指令
IN
功能:
语法:
格式:
是否改变标志位:
OUT
功能:
语法:
格式:
是否改变标志位:
目的地址传送指令
LEA
功能:
语法:
格式:
是否改变标志位:
LDS
功能:
语法:
格式:
是否改变标志位:
LES
功能:
语法:
格式:
是否改变标志位:
LFS
功能:
语法:
格式:
是否改变标志位:
LGS
功能:
语法:
格式:
是否改变标志位:
LSS
功能:
语法:
格式:
是否改变标志位:
标志传送指令
LAHF
功能:
语法:
格式:
是否改变标志位:
SAHF
功能:
语法:
格式:
是否改变标志位:
PUSHF
功能:
语法:
格式:
是否改变标志位:
POPF
功能:
语法:
格式:
是否改变标志位:
PUSHD
功能:
语法:
格式:
是否改变标志位:
POPD
功能:
语法:
格式:
是否改变标志位:
二、算数运算指令
ADD,ADC
功能:
语法:
格式:
是否改变标志位:
SUB,SBB
功能:
语法:
格式:
是否改变标志位:
INC,DEC
功能:
语法:
格式:
是否改变标志位:
NEG
功能:
语法:
格式:
是否改变标志位:
MUL,IMUL
功能:
语法:
格式:
是否改变标志位:
DIV,IDIV
功能:
语法:
格式:
是否改变标志位:
CBW,CWD
功能:
语法:
格式:
是否改变标志位:
AAA,AAS,AAM,AAD
功能:
语法:
格式:
是否改变标志位:
DAA,DAS
功能:
语法:
格式:
是否改变标志位:
CBW,CWD,CWDE,CDQ
功能:
语法:
格式:
是否改变标志位:
三、逻辑运算指令
AND
功能:
语法:
格式:
是否改变标志位:
OR
功能:
语法:
格式:
是否改变标志位:
XOR
功能:
语法:
格式:
是否改变标志位:
NOT
功能:
语法:
格式:
是否改变标志位:
TEST
功能:
语法:
格式:
是否改变标志位:
SHL,SHR
功能:
语法:
格式:
是否改变标志位:
SAL,SAR
功能:
语法:
格式:
是否改变标志位:
ROL,ROR
功能:
语法:
格式:
是否改变标志位:
RCL,RCR
功能:
语法:
格式:
是否改变标志位:
注:以上八种移位指令,移位次数可达255次,移位一次可以直接用操作码,移位大于一次时,需要由寄存器CL给出移位次数。
四、串运算指令
MOVSB,MOVSW,MOVSD
功能:
语法:
格式:
是否改变标志位:
CMPSB,CMPSW,CMPSD
功能:
语法:
格式:
是否改变标志位:
SCAS
功能:
语法:
格式:
是否改变标志位:
LODSB,LODSW
功能:
语法:
格式:
是否改变标志位:
STOSB,STOSW
功能:
语法:
格式:
是否改变标志位:
REP,REPE,REPNE
功能:
语法:
格式:
是否改变标志位:
REPZ,REPNZ
功能:
语法:
格式:
是否改变标志位:
REPC,REPNC
功能:
语法:
格式:
是否改变标志位:
###
五、程序转移指令
无条件转移指令
JMP
功能:
语法:
格式:
是否改变标志位:
CALL
功能:
语法:
格式:
是否改变标志位:
REP,RETF
功能:
语法:
格式:
是否改变标志位:
条件转移指令
JA,JNBE
功能:
语法:
格式:
是否改变标志位:
JAE,JNB
功能:
语法:
格式:
是否改变标志位:
JB,JNAE
功能:
语法:
格式:
是否改变标志位:
JBE,JNA
功能:
语法:
格式:
是否改变标志位:
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
功能:
语法:
格式:
是否改变标志位:
LOOPE,LOOPZ
功能:
语法:
格式:
是否改变标志位:
LOOPNE,LOOPNA
功能:
语法:
格式:
是否改变标志位:
JCXZ
功能:
语法:
格式:
是否改变标志位:
JECXZ
功能:
语法:
格式:
是否改变标志位:
中断指令
INT
功能:
语法:
格式:
是否改变标志位:
INTO
功能:
语法:
格式:
是否改变标志位:
IRET
功能:
语法:
格式:
是否改变标志位:
处理器控制指令
HLT
功能:
语法:
格式:
是否改变标志位:
WAIT
功能:
语法:
格式:
是否改变标志位:
ESC
功能:
语法:
格式:
是否改变标志位:
LOCK
功能:
语法:
格式:
是否改变标志位:
NOP
功能:
语法:
格式:
是否改变标志位:
STC,CLC
功能:
语法:
格式:
是否改变标志位:
CMC
功能:
语法:
格式:
是否改变标志位:
STD,CLD
功能:
语法:
格式:
是否改变标志位:
STI,CLI
功能:
语法:
格式:
是否改变标志位:
六、伪指令
DW
功能:
语法:
格式:
是否改变标志位:
PROC
功能:
语法:
格式:
是否改变标志位:
ENDP
功能:
语法:
格式:
是否改变标志位:
SEGMENT
功能:
语法:
格式:
是否改变标志位:
ASSUME
功能:
语法:
格式:
是否改变标志位:
ENDS
功能:
语法:
格式:
是否改变标志位:
END
功能:
语法:
格式:
是否改变标志位:
七、标志处理指令
CLC,STC
功能:
语法:
格式:
是否改变标志位:
CMC
功能:
语法:
格式:
是否改变标志位:
CLD,STD
功能:
语法:
格式:
是否改变标志位:
CLI,STI
功能:
语法:
格式:
是否改变标志位:
NOP
功能:
语法:
格式:
是否改变标志位:
HLT
功能:
语法:
格式:
是否改变标志位:
WAIT
功能:
语法:
格式:
是否改变标志位:
ESC
功能:
语法:
格式:
是否改变标志位:
LOCK
功能:
语法:
格式:
是否改变标志位:
Contributed By Tianyu Yin,Beijing Institute of Technology
###