首页 > 技术文章 > 汇编命令

kekec 2015-12-09 11:54 原文

空指令

nop  #90

软件断点

int 3  #CC // 调试状态会断住程序;非调试状态会抛出SEH异常

压栈

push ebp  #55 // 将ebp压栈(esp-=4)

push edi  #57 // 将edi压栈(esp-=4)

弹栈

pop ecx // 将栈顶的4个字节弹出,并放在ecx中(esp+=4)

函数返回

ret // (esp+=4)

ret 8 // (esp+=8)

赋值

mov ebp,esp  #8bec  // ebp=esp

mov ecx,0Ah  #b90a000000  // ecx=0Ah

mov eax,0CCCCCCCCh  #b8cccccccc // eax=0CCCCCCCCh

mov dword ptr [ebp-0Ch],2 // [ebp-0Ch]=2(将2写入到ebp-0Ch地址处,中括号表示取值,相当于c语言里面的*运算符)

加法

 

减法

sub esp,28h  #83ec28  // esp-=28h

取有效地址

lea edi,[ebp-28h]  // edi=ebp-28h

串赋值

rep movs dword ptr es:[edi], dword ptr [esi]  // 循环从esi指向的内存区域复制数据到edi处的内存区域,复制ecx次,每次数据长度为一个DWORD

串存储

rep stos dword ptr es:[edi]  #f3ab // 将eax的值循环写到edi处的内存区域中,循环ecx次,每次数据长度为一个DWORD

推荐阅读