• 1535阅读
  • 4回复

2.1.6、内联汇编编程实例 [复制链接]

上一主题 下一主题
离线啊冲
 

只看楼主 倒序阅读 使用道具 楼主  发表于: 2014-07-06

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之后,需要将ESP8 . 还有一点需要知道的是,调用CALL之后,返回值都是EAX. 然后又测试了一下减法带参调用
善者 慈悲心常在 无怨无恨 以苦为乐
默认压缩密码www.hifyl.com
文件分享密码问题:http://www.hifyl.com/read-htm-tid-4444.html
离线liuying5822

只看该作者 沙发  发表于: 2015-02-21
支持看下
离线liuying5822

只看该作者 板凳  发表于: 2015-02-21
支持下
离线liuying5822

只看该作者 地板  发表于: 2015-02-21
支持看下
离线liuying5822

只看该作者 4楼 发表于: 2015-02-21
支持下
快速回复
限100 字节
批量上传需要先选择文件,再选择上传
 
上一个 下一个