在VC++2005中内嵌汇编

时间:2021-10-01 04:06:22

VC++2005中内嵌汇编

 

作者:flyfish 2011-02-27

nanb进行数值交换

 

int na=10;

int nb=11;

_asm

     {

         mov eax, na

         mov ebx, nb

         mov nb ,eax

         mov na ,ebx

     }

 

二 加法运算

int AssemblerAdd(int na,int nb)

{

     _asm

     {

     mov eax,na

     add nb,eax

     }

     return nb;

}

三 减法运算

int AssemblerSub(int na,int nb)

{

     //na-nb

     _asm

     {

         mov eax,nb

         sub na,eax

     }

     return na;

}

 

四 采用汇编调用加法运算函数

     int nTemp=0;

     _asm

     {

         push 10

         push 20

         call AssemblerAdd

         add esp,8

         mov nTemp,eax

     }

add esp,8

这句是为了堆栈的平衡,应为这个函数有两个参数,每次push参数时esp都要减4

即在32位平台上,ESP每次减少4字节。

 

五 在汇编查找代码小技巧

加花指令

     _asm

     {

         //查找命令序列

         mov edi, edi

         mov edi, edi

 

         mov na,100;

         mov nb,200

     }

00412D43    8BFF            mov     edi, edi

00412D45    8BFF            mov     edi, edi

00412D47    C705 A4004200 6>mov     dword ptr [4200A4], 64

00412D51    C705 A8004200 C>mov     dword ptr [4200A8], 0C8

 

以上程序在VC++2005 下 调试通过