企业即时通讯 - Enterprise Instant Messenger

局域网聊天工具,文字讯息、文件发送、语音通讯、高清视频通讯、远程桌面控制。

用户操作
[即时聊天] [发私信] [加为好友]
FreeEIM StudioID:i_like_cpp
972448次访问,排名32,好友4人,关注者7人。
i_like_cpp的文章
原创 888 篇
翻译 4 篇
转载 69 篇
评论 1148 篇
FreeEIM Studio的公告
最近评论
ScanerKi:#include <stdio.h>

int asm(int s)
{
int t=0;
__asm
{
mov eax, DWORD PTR [ebp+8] ;把s的值传给eax
mov t, eax ;把eax的值传给t
}
printf("- %d……
li_delong:谢谢
li_delong:谢谢
li_delong:谢谢
XUETUJIAN:
文章分类
收藏
相册
EIM 截图
相关软件图片
PI的最精确值
FreeEIM 标签
FreeEIM华军下载
XP SP2 SDK
下载FreeEIM
盛天龙
飞鸽传书
不错的网站
CPPBLOG
局域网聊天
泡妞专家
用VC写Assembly代码(RSS)
百度的Blog(RSS)
存档
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes

原创 用VC写Assembly代码(3)收藏

新一篇:  用VC写Assembly代码(4) | 旧一篇: 用VC写Assembly代码(2)

不知为什么,对这种编程方法越来越大越有兴趣.先写个使用参数的例子(十分简单,适用于任何懂C的人)给各位参考一下吧:

#include <stdio.h>

int asm(int s)
{
 int t=0;
 __asm
 {
  mov eax, DWORD PTR [ebp+8] ;把s的值传给eax
  mov t, eax     ;把eax的值传给t
 }
 printf("- %d -", t);//把T显示出来
}
void main()
{
 asm(100);
}

我调试这个程序,得出以下汇编代码:
3:    int asm(int s)
4:    {
0040B4B0   push        ebp
0040B4B1   mov         ebp,esp
0040B4B3   sub         esp,44h
0040B4B6   push        ebx
0040B4B7   push        esi
0040B4B8   push        edi
0040B4B9   lea         edi,[ebp-44h]
0040B4BC   mov         ecx,11h
0040B4C1   mov         eax,0CCCCCCCCh
0040B4C6   rep stos    dword ptr [edi]
5:        int t=0;
0040B4C8   mov         dword ptr [ebp-4],0
6:        __asm
7:        {
8:            mov eax, DWORD PTR [ebp+8]  ;把s的值传给eax
0040B4CF   mov         eax,dword ptr [ebp+8]
9:            mov t, eax                  ;把eax的值传给t
0040B4D2   mov         dword ptr [ebp-4],eax
10:       }
11:       printf("- %d -", t);//把T显示出来
0040B4D5   mov         eax,dword ptr [ebp-4]
0040B4D8   push        eax
0040B4D9   push        offset string "%d====" (0041ff3c)
0040B4DE   call        printf (0040b790)
0040B4E3   add         esp,8
12:   }
0040B4E6   pop         edi
0040B4E7   pop         esi
0040B4E8   pop         ebx
0040B4E9   add         esp,44h
0040B4EC   cmp         ebp,esp
0040B4EE   call        __chkesp (0040b470)
0040B4F3   mov         esp,ebp
0040B4F5   pop         ebp
0040B4F6   ret

发表于 @ 2006年05月21日 20:16:00|评论(loading...)|编辑

新一篇:  用VC写Assembly代码(4) | 旧一篇: 用VC写Assembly代码(2)

评论

#ScanerKi 发表于2008-11-20 16:11:58  IP: 202.181.156.*
#include <stdio.h>

int asm(int s)
{
int t=0;
__asm
{
mov eax, DWORD PTR [ebp+8] ;把s的值传给eax
mov t, eax ;把eax的值传给t
}
printf("- %d -", t);//把T显示出来
}
void main()
{
asm(100);
}





ebp+8 是s

ebp+4 是int t=0的 t
发表评论  


登录
Csdn Blog version 3.1a
Copyright © FreeEIM Studio