企业即时通讯 - 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代码(2)收藏

新一篇: 用VC写Assembly代码(3) | 旧一篇: 用VC写Assembly代码(1)

虽然没人看,但我决定还是写多篇啦.

至于Assembly指令的功能,我会在适当的位置说名,如果不懂汇编的朋友,我们也可以通过没个例子和说名,慢慢也了解汇编.

来看看这个:

#include <stdio.h>

void loop()
{
 char szloop[] ="looping\n";
 int i=0;
 __asm
 {
  start:
  lea eax, szloop
  cmp i, 10
  jz exit
  push eax
  call printf
  pop eax
  add i, 1
  jmp start
  exit:
 }
}
void main()
{
 char szbuf[] = "Hello world.\n";
 loop();
 printf(szbuf);
}

有人喜欢这样写汇编吗?告诉我吧,我暂时不做代码的解释.

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

新一篇: 用VC写Assembly代码(3) | 旧一篇: 用VC写Assembly代码(1)

评论

#i_like_cpp 发表于2006-05-19 08:38:00  IP: 218.17.86.*
INC指令
指令格式:INC OPRD
功能:将OPRD指定的寄存器或存储器内容加1,然后送会寄存器或存储器。
INC影响标志位AF、OF、PF、SF、ZF,同ADD指令,但不影响CF

参考:
http://rjx.cslg.cn/~zgl/2/MASM/%BB%E3%B1%E0%B6%E0%C3%BD%CC%E5%BD%CC%D1%A7/2/inc.htm
#i_like_cpp 发表于2006-05-19 08:41:00  IP: 218.17.86.*
我写了这段代码,功能和上面一样,只是更低级点,
#include <stdio.h>

void loop()
{
char szbuf[] = "Hello world.\n";
int i = 0;
__asm
{
start:
cmp dword ptr [ebp-14h], 10
je exit
lea eax, [ebp-10h]
push eax
call printf
pop eax
inc dword ptr [ebp-14h]
jmp start
exit:
}
}
void main()
{
loop();
}
#hacker47 发表于2006-05-19 00:08:00  IP: 218.23.65.*
大概是打印输出szloop吧,没仔细看。
对汇编有兴趣。
#hacker47 发表于2006-05-19 00:15:00  IP: 218.23.65.*
void loop()
{
char szloop[] ="looping\n"; //定义变量
int i=0; //同上
__asm //开始asm
{ //标号start
start:
lea eax, szloop //将szloop的地址存放在eax中
cmp i, 10 //比较i和10
jz exit //如果循环了10次就退出
push eax //将EAX压入堆栈
call printf //调用printf库过程
pop eax //将在堆栈中的原EAX值弹回寄存器
add i, 1 //将I增加1(其实用inc指令更好)
jmp start //跳回start
exit: //退出标号
}
}


是否正确,请雅正。
#hacker47 发表于2006-05-19 00:16:00  IP: 218.23.65.*
交个朋友吧。
#i_like_cpp 发表于2006-05-19 08:23:00  IP: 218.17.86.*
谢谢hacker47
#aa 发表于2006-05-20 18:55:00  IP: 218.18.156.*
Balance of the subscribe is not enough.
#chinese_hacker 发表于2007-01-09 02:39:11  IP: 220.118.139.*
好开心哦!在这边找到好多想要的代码,获益不浅,谢了!
#lonkil 发表于2007-03-19 09:16:11  IP: 220.178.37.*
博主,虽然识贷的人不是很多。
但还是有的。
发表评论  


登录
Csdn Blog version 3.1a
Copyright © FreeEIM Studio