用VC写Assembly代码(3)

原创 2006年05月21日 20:16:00

不知为什么,对这种编程方法越来越大越有兴趣.先写个使用参数的例子(十分简单,适用于任何懂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

An error occurred during the installation of assembly 'Microsoft.VC90.CRT,version = "9.0.21022.8"

问题描述windows安装python2.7的时候出现An error occurred during the installation of assembly ‘Microsoft.VC90.CRT...

远程注入代码,一些过时的ring3技术(ASM、VC++、Delphi) (非Dll注入)

ASM:                                                                                              in...
  • god00
  • god00
  • 2011年04月05日 09:49
  • 790

Inline Assembly in GCC Vs VC++.

  • 2012年11月15日 22:24
  • 182KB
  • 下载

如何通过ildasm/ilasm修改assembly的IL代码

这段时间为跟踪一个Bug而焦头烂额,最后发现是Framework的问题,这让人多少有些绝望。所以到微软论坛提了个帖子,希望能得到些帮助。虽然论坛智能到能够判断楼主是否是MSDN订阅用户,以便尽快解决(...

详解 “预处理、编译(compile)、 代码优化、 汇编(Assembly)、 链接 (link)”的具体过程

我们在用vc写好代码后,在进行编译和连接的时候,经常会遇到各种问题: 如在连接时遇到的问题:(1)error LNK2019: 无法解析的外部符号*** ,该符号在函数***中被引用    (2)er...

VC++开发技术大全代码3

  • 2007年12月24日 18:57
  • 2.64MB
  • 下载

G711转MP3的VC代码

  • 2009年02月27日 19:04
  • 1.38MB
  • 下载

用Vc++写的音视频即时通话程序(部分代码)

// BRAnyChatSDKDemoDlg.cpp : implementation file // #include "stdafx.h" #include #include "BRAnyCh...
  • Xpw0000
  • Xpw0000
  • 2014年04月15日 16:37
  • 815

lm25-p0436-3_a_db410c_assembly_drawing.pdf

  • 2017年11月16日 00:10
  • 1.2MB
  • 下载

Mastering Assembly Programming azw3

  • 2017年10月16日 09:21
  • 4.18MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用VC写Assembly代码(3)
举报原因:
原因补充:

(最多只允许输入30个字)