VC程序中嵌入汇编的方法
2012-10-30 00:32
323 查看
内嵌汇编的使用方法是:
__asm
{
语句
}
你可以把它插入程序中的任何位置,非常灵活。
让我们看一个可以将两个正整数相加的程序:
编译运行之后的结果和C/C++写是一样的!
那既然汇编和C++实现的结果都一样,而且写汇编还要考虑烦琐的细节,写起来比C/C++慢。不像C/C++这样的高级语言方便。为什么我们还有必要用汇编呢?
因为汇编更接近底层,更接近机器语言,直接对硬件调用,执行起来效率更高。像写一些要求比较高的软件,就需要写部分汇编。
之前,测试程序运行时间的问题,更精确的方法就是用汇编写的。
具体可以参看:http://blog.sina.com.cn/s/blog_71ded6bf01015vxd.html
__asm
{
语句
}
你可以把它插入程序中的任何位置,非常灵活。
让我们看一个可以将两个正整数相加的程序:
#include <iostream> using namespace std; void main( ) { unsigned int a,b; cin >> a; cin >> b; __asm //下面是内嵌汇编... { mov eax, a ;可以像这样直接对eax赋值 mov ebx, b; add eax, ebx mov a, eax ;可以直接将eax的值赋给a } //内嵌汇编部分结束... cout<<a<<endl; }
编译运行之后的结果和C/C++写是一样的!
那既然汇编和C++实现的结果都一样,而且写汇编还要考虑烦琐的细节,写起来比C/C++慢。不像C/C++这样的高级语言方便。为什么我们还有必要用汇编呢?
因为汇编更接近底层,更接近机器语言,直接对硬件调用,执行起来效率更高。像写一些要求比较高的软件,就需要写部分汇编。
之前,测试程序运行时间的问题,更精确的方法就是用汇编写的。
// VC 6.0 中的ASM 代码 long HighStart,LowStart; long numhigh,numlow; //获取代码运行开始时cpu内部计数器的值 __asm { CPUID RDTSC mov HighStart, edx mov LowStart, eax } //这里放你要测试的代码 //获取代码结束时cpu内部计数器的值,并减去初值 __asm { CPUID RDTSC sub eax, LowStart mov numlow, eax mov eax,edx sbb eax,HighStart mov numhigh,eax }
具体可以参看:http://blog.sina.com.cn/s/blog_71ded6bf01015vxd.html
相关文章推荐
- vc程序中嵌入汇编的语句的说明
- VC和VB嵌入汇编的方法
- VC.net嵌入汇编处理指针的方法
- VC中调用其它程序的三种方法总结
- AT&T汇编和GCC 嵌入汇编、x86汇编和vc嵌入汇编
- VC++ 获得程序运行根目录 汇编源码
- [Windows][VC]开机自动启动程序的几种方法
- 利用vc 6.0目录下的cl.exe直接编译程序的方法
- 编译boost程序出现如下错误fatal error LNK1104: cannot open file 'libboost_system-vc100-mt-gd-1_54.lib'的解决方法
- vc程序以管理员权限运行方法
- VC中单文档/多文档的程序左上角图标加载不正确解决方法
- SkinMagic的使用方法-——为VC开发程序换皮肤
- 使用单文档视图结构把Word嵌入到VC程序中(2)
- VC中无标题栏的对话框界面 ,如何来拖动程序的解决方法
- VC WinExec打开指定程序或者文件的方法
- VC中调用其他程序的方法(函数)
- VC获取系统时间、程序运行时间(精确到秒,毫秒)的五种方法
- 汇编debug程序跳转指令的方法
- 浅议VC程序中进程间信息交换方法
- 程序启动时,隐藏对话框的方法(基于vc的对话框工程)