在VC++2005中内嵌汇编

    技术2022-05-20  54

    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 下 调试通过

     


    最新回复(0)