Dict.CN 在线词典, 英语学习, 在线翻译
随笔-98  评论-328  文章-0  trackbacks-0

惭愧,到今天就只会这么简单的汇编程序,汇编语言要猛补一下。记录一下我第一个简单的汇编程序吧。

 1 #include  < windows.h >
 2
 3 int  a[]  = { 1 , 2 , 3 , 4 , 5 , 6 } ;
 4 int  b[]  = { 2 , 2 , 3 , 4 , 5 , 6 } ;
 5 int  c[]  = { 2 , 2 , 3 , 4 , 5 , 6 } ;
 6
 7 BOOL Compare( int   * a, int   * b, int  len)
 8 {
 9  BOOL bRet  =  FALSE;
10  __asm
11   {
12   MOV ECX, len // 将a的长度放到ECX中
13   MOV EDX, len // 将b的长度放到EDX中
14   MOV ESI, a  // 将a指针的值放到ESI中
15   MOV EDI, b  // 将b指针的值放到EDI中
16   REP CMPSD  // 按4个字节来比较ESI和EDI中的值,长度在ECX和EDX中给出
17   JNZ SETFLAG  // 如果不相等条SETFLAG
18   MOV bRet, TRUE // 相等就设置bRet为TRUE
19   JMP EXITREG   // 退出
20 SETFLAG:
21   MOV bRet, FALSE  // 不相等
22 EXITREG:
23  }

24   return  bRet;
25 }

26
27 int  main( int  argc,  char *  argv[])
28 {
29  BOOL bRet  =  Compare(a,b, 6 );
30  bRet  =  Compare(b,c, 6 );
31   return   0 ;
32 }

33
posted on 2006-08-16 21:41 笨笨 阅读(763) 评论(4)  编辑 收藏 引用

评论:
# re: 最简单的汇编程序:缓冲区比较 2006-12-27 16:08 | 李锦俊
我从来没用过汇编。。。听说这段代码不能跨平台,要稍作修改。  回复  更多评论
  
# re: 最简单的汇编程序:缓冲区比较 2006-12-27 22:24 | 笨笨
那是那是,_asm只有VC才认识.呵呵  回复  更多评论
  
# re: 最简单的汇编程序:缓冲区比较 2007-10-21 03:20 | dc
基本上所有的平台都支持这段代码吧???  回复  更多评论
  
# re: 最简单的汇编程序:缓冲区比较 2007-11-14 08:12 | evan.yh
那是因为gcc用的内嵌汇编格式为AT&T格式。而且。如果我没记错的话在REP前面要加上CLD。mov edx, len做什么用?没看明白。  回复  更多评论
  

标题  
姓名  
主页
验证码 *
内容(提交失败后,可以通过“恢复上次提交”恢复刚刚提交的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
[使用Ctrl+Enter键可以直接提交]
相关链接:
网站导航: