NOP(无操作) 90
PUSH
将操作数压入堆栈中
push 401000 //将401000这个数值压入堆栈
push [401000] //将401000这个地址的数值压入堆栈
POP
取出堆栈顶部的第一个字母或者第一个值,然后存放到指定的目标地址内存单元中
PUSHAD
把所有通用寄存器的内容按一定顺序压入到堆栈中
相当于’PUSH EAX,PUSH ECX,PUSH EDX,PUSH EBX,PUSH ESP,PUSH EBP,PUSH ESI, PUSH EDI’
POPAD
与PUSHAD正好相反
POPAD等价于“POP EDI,POP ESI,POP ESP,POP ESP,POP EBX,POP EDX,POP ECX,POP EAX”
注意:
PUSHA 等价于 'PUSH AX, CX, DX, BX, SP, BP, SI, DI'。
POPA 等价于 'pop DI, SI, BP, SP, BX, DX, CX, AX'。
MOV
将第二个操作数赋值给第一个操作数,例如:
MOV EAX, EBX
将EBX值赋值给EAX
MOVSX (带符号扩展的传送指令)
第一个操作数位数大于第二个操作数,将第二个操作数复制到第一个操作数,多余位数用第二个操作数符号位填充。
例如:MOVSX EAX,BX EAX=44444444 BX=A000
执行后 EAX = FFFFA000
MOVZX (带0扩展的传送指令)
和MOVSX相似,剩余位数使用0填充
例如:MOVZX EAX,BX EAX=44444444 BX=A000
执行后 EAX= 0000A000
LEA (取地址指令)
将第二个操作数的地址赋值给第一个操作数
例如:LEA EAX,DWORD PTR DS:[404000]
EAX = 404000
XCHG (交换 寄存器/内存单元 和 寄存器)
XCHG EAX,ECX 交换EAX,ECX的值