以下是一些常见的 x86 汇编指令的解释以及它们的缩写含义,这些缩写有助于理解和记忆指令的用途:
数据传输类指令
-
MOV (Move)
- 含义: 将源操作数的数据复制到目标操作数中。
- 缩写: MOV 代表 “Move”(移动),尽管是复制而非移动。
-
PUSH (Push onto stack)
- 含义: 将操作数压入栈中,
rsp
栈指针会减小。
- 缩写: PUSH 代表 “Push”(压入)。
-
POP (Pop from stack)
- 含义: 从栈中弹出数据到目标操作数,
rsp
栈指针会增加。
- 缩写: POP 代表 “Pop”(弹出)。
-
LEA (Load Effective Address)
- 含义: 计算一个有效地址并将其加载到寄存器中,不进行内存访问。
- 缩写: LEA 代表 “Load Effective Address”(加载有效地址)。
-
XCHG (Exchange)
- 含义: 交换两个操作数的内容。
- 缩写: XCHG 代表 “Exchange”(交换)。
算术运算类指令
-
ADD (Addition)
- 含义: 将两个操作数相加,结果存储在目标操作数中。
- 缩写: ADD 代表 “Add”(加法)。
-
SUB (Subtraction)
- 含义: 从目标操作数中减去源操作数,结果存储在目标操作数中。
- 缩写: SUB 代表 “Subtract”(减法)。
-
MUL (Multiply)
- 含义: 无符号乘法,乘法结果放在指定寄存器中。
- 缩写: MUL 代表 “Multiply”(乘法)。
-
DIV (Division)
- 含义: 无符号除法,结果为商和余数,存放在寄存器中。
- 缩写: DIV 代表 “Divide”(除法)。
-
INC (Increment)
- 含义: 将操作数增加1。
- 缩写: INC 代表 “Increment”(递增)。
-
DEC (Decrement)
- 含义: 将操作数减去1。
- 缩写: DEC 代表 “Decrement”(递减)。
逻辑运算类指令
-
AND (Logical AND)
- 含义: 对两个操作数执行按位与运算。
- 缩写: AND 代表 “AND”(与运算)。
-
OR (Logical OR)
- 含义: 对两个操作数执行按位或运算。
- 缩写: OR 代表 “OR”(或运算)。
-
XOR (Logical Exclusive OR)
- 含义: 对两个操作数执行按位异或运算。
- 缩写: XOR 代表 “Exclusive OR”(异或)。
-
NOT (Logical NOT)
- 含义: 对操作数执行按位取反。
- 缩写: NOT 代表 “NOT”(非运算)。
-
SHL (Shift Left)
- 含义: 将操作数向左移动指定的位数,右边用0填充。
- 缩写: SHL 代表 “Shift Left”(左移)。
-
SHR (Shift Right)
- 含义: 将操作数向右移动指定的位数,左边用0填充。
- 缩写: SHR 代表 “Shift Right”(右移)。
控制流类指令
-
JMP (Jump)
- 含义: 无条件跳转到指定的标签位置。
- 缩写: JMP 代表 “Jump”(跳转)。
-
CALL (Call subroutine)
- 含义: 调用子程序,将返回地址压入栈。
- 缩写: CALL 代表 “Call”(调用)。
-
RET (Return from subroutine)
- 含义: 从子程序返回,弹出栈顶的地址到
IP
(指令指针)。
- 缩写: RET 代表 “Return”(返回)。
-
CMP (Compare)
- 含义: 比较两个操作数,将结果影响标志寄存器,但不修改操作数。
- 缩写: CMP 代表 “Compare”(比较)。
-
JE (Jump if Equal)
- 含义: 如果前一条
CMP
指令比较结果为等于,则跳转。
- 缩写: JE 代表 “Jump if Equal”(等于时跳转)。
-
JNE (Jump if Not Equal)
- 含义: 如果
CMP
指令比较结果为不等于,则跳转。
- 缩写: JNE 代表 “Jump if Not Equal”(不等时跳转)。
-
JZ (Jump if Zero)
- 含义: 如果零标志(ZF)被置位(即结果为0),则跳转。
- 缩写: JZ 代表 “Jump if Zero”(零时跳转)。
-
JNZ (Jump if Not Zero)
- 含义: 如果零标志(ZF)未置位(即结果不为0),则跳转。
- 缩写: JNZ 代表 “Jump if Not Zero”(非零时跳转)。
系统操作类指令
-
NOP (No Operation)
- 含义: 什么也不做,但占用一个 CPU 时钟周期。
- 缩写: NOP 代表 “No Operation”(无操作)。
-
HLT (Halt)
- 含义: 停止处理器执行,直到发生中断。
- 缩写: HLT 代表 “Halt”(停止)。
帮助记忆的方法
- 对称性: 注意到一些逻辑指令具有对称性,如
AND
、OR
、XOR
,它们的名称和用途都十分接近。
- 相反: 指令如
INC
和 DEC
是彼此的相反操作,JZ
和 JNZ
、JE
和 JNE
也是类似。
- 缩写首字母: 大部分指令直接取自英文单词的首字母或简写,因此记住指令的英文单词可以帮助记忆指令名称。
熟练使用这些缩写和理解它们的功能,会帮助你更好地理解和编写汇编代码。