转自:http://blog.csdn.net/arcsinsin/article/details/8126473

内嵌汇编的使用方法是:
__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++写是一样的!
1 2

3

 

那既然汇编和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简单嵌入汇编的更多相关文章

  1. 旧文备份:VC中嵌入NASM编写的汇编函数

    在公司开发的RT下没法使用C库,并且替代库函数没有几个,需要用到setjmp和longjmp函数,没办法,只能自己想办法了,上sourceforge淘换到一个小日本的工程,提供这两个函数的替代源码,名 ...

  2. 使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用

    本周作业的主要内容就是采用gcc嵌入汇编的方式调用system call. 系统调用其实就是操作系统提供的服务.我们平时编写的程序,如果仅仅是数值计算,那么所有的过程都是在用户态完成的,但是我们想将变 ...

  3. KEIL C51 中嵌入汇编以及C51与A51间的相互调用

    如何在 KEIL C51(v6.21) 中调用汇编函数的一个示例 有关c51调用汇编的方法已经有很多帖子讲到,但是一般只讲要点,很少有对整个过程作详细描述,对于初学者是不够的,这里笔者通过一个简单例子 ...

  4. 3.3.2 嵌入汇编(摘自<linux内核完全剖析>)

    内核C语言程序嵌入式汇编代码又叫内联汇编,具有输入和输出参数的嵌入汇编语句的基本格式为: ************************************************** asm( ...

  5. 在C中嵌入汇编

    早前公布了C和汇编混编的温度控制器程序,收到一些朋友的询问,他们无法在自己程序中使用我的18B20的汇编子程序或无法正常通过混编后的程序编译. 其实在KEIL中嵌入汇编的方法很简单.如图一,在C文件中 ...

  6. 在c语言中嵌入汇编语句,对于我来说相当难。

    今天早上在csdn论坛上看到一个帖子http://topic.csdn.net/u/20120917/14/82f42e17-977a-4824-95bd-7b79db15d283.html:“C语言 ...

  7. linux内核分析第四周-使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用

    本周作业的主要内容就是采用gcc嵌入汇编的方式调用system call.系统调用其实就是操作系统提供的服务.我们平时编写的程序,如果仅仅是数值计算,那么所有的过程都是在用户态完成的,但是我们想将变量 ...

  8. linux内核分析作业4:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用

    系统调用:库函数封装了系统调用,通过库函数和系统调用打交道 用户态:低级别执行状态,代码的掌控范围会受到限制. 内核态:高执行级别,代码可移植性特权指令,访问任意物理地址 为什么划分级别:如果全部特权 ...

  9. [汇编] C语言中嵌入汇编

    >_<" 下面是在C语言中嵌入汇编的例子,下面是三点要注意的~ 1.内联式汇编 2._asm关键字 3.并不是所有中断都能被支持 #include<iostream> ...

随机推荐

  1. C++_IO与文件3-用cin进行输入

    接下来讨论的是如何给程序提供数据? cin对象将标准输入表示为字节流. 通常情况下是通过键盘来生成这种字节流 cin对象根据接收值得变量类型,使用其方法将字符序列转换为所需的类型. cin>&g ...

  2. HDU - 5686-Problem B (递推+高精)

    度熊面前有一个全是由1构成的字符串,被称为全1序列.你可以合并任意相邻的两个1,从而形成一个新的序列.对于给定的一个全1序列,请计算根据以上方法,可以构成多少种不同的序列. Input 这里包括多组测 ...

  3. maven tomcat eclipse 配置 debug

    1.单击Eclipse菜单"Run"中的"Run Configurations". 2.在弹出的对话框中的左侧树中找"到Maven Build&quo ...

  4. 1、在linux服务器centos虚拟机搭建nginx网站

    1.搭建linux虚拟机 具体参考 http://jingyan.baidu.com/article/86112f135e584a273697876b.html (如何在WIN7下进行LINUX虚拟机 ...

  5. python (2) 之 pyc

    最近在编写Python脚本过程中遇到一个问题比较奇怪:Python脚本正常的,但执行报错"AttributeError: 'module' object has no attribute ' ...

  6. 认识HTML中文本、图片、链接标签和路径

    前端之HTML.CSS(一) 开发工具 编辑器 Dreamware.Sublime.Visual Studio Code.WebStorm 浏览器 Chrome.IE(Edge).Safari.Fir ...

  7. rancher2.X搭建k8s集群平台

    一, 新版特性 Rancher 1.6支持多种容器编排框架,包括Kubernetes.Mesos.Docker Swarm,默认的基础编排引擎是Cattle,Cattle极简的操作体验受到了大量开源社 ...

  8. (转)模块readline解析

    模块readline解析 原文:https://www.cnblogs.com/fireflow/p/4841413.html readline模块定义了一系列函数用来读写Python解释器中历史命令 ...

  9. vue-scroller的使用 && 开发自己的 scroll 插件

    vue-scroller的使用 在spa开发过程中,难免会遇到使用scroll的情况,比如下面的: 即,当用户选择好商品之后,点击购物车,就会有一个购物车弹窗,如果选择的商品小于三个,刚好合适,如果多 ...

  10. Nginx设置日志分割方法

    目标:nginx cronolog日志分割配置文档,每分钟分割一次NGINX访问日志. 大体步骤如下: 1.nginx日志配置 access_log /var/log/nginx/access.log ...