常见汇编指令

一、格式

  • Intel 格式,寄存器名称和数值前无符号
指令名称 dst,src
  • AT&T 格式,寄存器名称前加“%”,数值前加“$”
指令名称 src,dst

二、汇编指令

1. mov des,src
  • dst和src类型相同
 mov eax,ebx
 mov eax,[0]
 mov eax,[0] <==0为偏移地址, DS:0 为实际的地址
 [...]表示一个内存单元,[10]中10表示偏移地址
 mov byte ptr[2000],0   
 DS:[2000h] <-- 0
  • 存储器操作数类型不确定时,使用byte ptr(字节) dword ptr(双字)确定,小端存储
2. lea dst,src

与mov指令类似,不过lea指令传送的src是有效地址,即取src的地址
如:

     mov bx,200
     mov si,30
     lea cx,[bx+si]    cx的值为230
     mov ax,[bx+si]    ax的值为地址为230h处的值
3. call ptr
  • 将当前指令的下一条指令的地址(也就是eip,eip中存放的程序下一条运行指令的地址)压入栈中;
  • 在JMP到ptr地址处;
4. offert :取得标号的偏移地址
5. cmp op1,op2

==> op1-op2 改变ZF的值

6. leave

在32位汇编下相当于

 mov esp,ebp
 pop ebp
7. POP DST;
  • pop:弹出堆栈指令,将栈顶的数据弹出并存至 DST
8. ret

返回指令,操作为将栈顶数据弹出至 eip

  • retn k
    1.将当前的ESP中指向的地址出栈;
    2.JMP到这个地址;
    3.弹出栈顶的k个字节的数据
  • retf
    1.将当前的ESP中指向的地址出栈给EIP;
    2.将当前的ESP中指向的地址出栈给CS;
    2.JMP到这个地址。

参考链接:https://zhuanlan.zhihu.com/p/25892385?utm_source=com.tencent.tim&utm_medium=social

猜你喜欢

转载自blog.csdn.net/Life_hes_az/article/details/79679164