2.1.6、内联汇编编程实例
a、加法add
b、减法sub
c、纯汇编调用函数CALL(参数的传递)
d、堆栈平衡
汇编指令add
int myadd(int a,int b)//加法
{
// return a+b;
_asm
{
mov ebx,b
add a,ebx
}
return a;
}
int mysub(int a,int b)//减法
{
//return a+b;
_asm
{
mov ebx,b // ebx=b;
sub a,ebx // a=a-b;
}
return a;
}
_stdcall //带参数
push b
push a
call myadd
////////////////////////////////////////////////
本节课继续讲汇编,加法指令add,减法指令sub,代码已经在上面教案中例出.先演示了一下汇编的加法指令,又演示了减法指令.除此之外还需要带参数的汇编调用
_asm
{
Push b
Push a
Call myadd
}
Int myadd(int a,int b)//带参数被调用
{
_asm
{
Mov ebx,b
Add a,ebx
}
Return a;
}
但是这样调用会出错,因为堆栈不平衡了,所以还要加上代码
_asm
{
Push b
Push a
Call myadd
Add esp,8
}
因为每PUSH一次ESP的值会减4,所以两次PUSH之后,需要将ESP加8 . 还有一点需要知道的是,调用CALL之后,返回值都是EAX里. 然后又测试了一下减法带参调用