在VC++2005中内嵌汇编
作者:flyfish 2011-02-27
一 na和nb进行数值交换
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 下 调试通过