VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 379|回复: 0

[交流] 献丑了,C和ASM

[复制链接]
39_avatar_middle
最佳答案
0 
在线会员 发表于 2021-9-18 01:53:30 | 显示全部楼层 |阅读模式
  1. #include "stdio.h"


  2. int  Function1(int x,int y)
  3. {
  4.         return  x+y;


  5. }
  6. int Function2(int x,int y,int z)
  7. { int r;
  8.         int k=Function1(x,y);
  9. r=        Function1(k,z);

  10. return r;
  11. }


  12. int G_A=0x100;

  13. void Function3(int x,int y)
  14. {
  15.         if (x>y)
  16.         {
  17.                 G_A=x;
  18.         }
  19.         else
  20.         {
  21.                 G_A=y;
  22.         }
  23.        

  24. }

  25. int z;
  26. void  _declspec(naked)  Function4(int x,int y)
  27. {
  28. //        int z;
  29.         _asm
  30.         {
  31.                 push ebp
  32.                 mov ebp,esp
  33.                 sub esp,0x40
  34.                 push esi
  35.                 push edi
  36.                 push ecx
  37.                 mov eax,0xcccccccc
  38.                 mov ecx,0x10
  39.                 lea edi,[ebp-0x40]
  40.                 rep stosd
  41.                 mov eax,[ebp+0x8]
  42.                 add eax,[ebp+0xc]
  43.         //        mov z,eax
  44.                 pop ecx
  45.                 pop edi
  46.                 pop esi
  47.                 mov esp,ebp
  48.                 pop ebp
  49.                 ret
  50.         }
  51. //        return z;
  52. }



  53. int  _declspec(naked)  Function5(int x,int y)
  54. {
  55.          //        int z;
  56.          _asm
  57.          {
  58.                  push ebp
  59.                          mov ebp,esp
  60.                          sub esp,0x40
  61.                          push esi
  62.                          push edi
  63.                          push ecx
  64.                          mov eax,0xcccccccc
  65.                          mov ecx,0x10
  66.                          lea edi,[ebp-0x40]
  67.                          rep stosd
  68.                          mov eax,[ebp+0x8]
  69.                          //add eax,[ebp+0xc]
  70.                          mov ecx,[ebp+0xc]
  71.                          cmp eax,ecx
  72.                          jle s
  73.                          mov G_A,eax
  74.                          jmp end
  75.    s:        mov G_A,ecx
  76.                        
  77.    end:                 pop ecx
  78.                          pop edi
  79.                          pop esi
  80.                          mov esp,ebp
  81.                          pop ebp
  82.                          ret
  83.          }
  84.          //        return z;
  85. }



  86. void  main()
  87. {
  88.         //int z=Function1(2,3);
  89. //        int z=Function2(1,2,3);

  90. //        Function3(2,1);
  91.         //int z=Function4(1,2);
  92.         //*printf*/printf("z=%d",z);
  93.        
  94.         Function5(0x10,0x20);
  95.         printf("G_A=0x%x",G_A);

  96.         getchar();


  97. }
复制代码

评分

参与人数 3驿站币 +3 热心值 +5 收起 理由
58_avatar_small thzzl + 2 + 2 赞一个!
98_avatar_small tomok + 1 感谢分享!
75_avatar_small wl1383838438 + 3 赞一个!

查看全部评分





上一篇:c学习之路的点滴记录——静态与动态链表
下一篇:献丑了 C和ASM(001)
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2021-11-30 02:31

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表