参考:

https://blog.csdn.net/ljx0305/article/details/5831742

https://www.cnblogs.com/jokerjason/p/9578646.html

https://blog.csdn.net/weixin_42528089/article/details/83713351

https://www.cnblogs.com/orlion/p/5765339.html

#include<stdio.h>
int a;
int main(){
printf("Test inline asm\n");
__asm("\
mov $789,%eax\n\
mov %eax,a\
");
printf("A is : %d\n",a);
return 0;
}

注意:mov不能同时直接寻址和间接寻址——mov $5,(%eax) 是错误的,要拆分为 mov $5 ,%ax  mov ax,(%eax)

//测试代码
#include<stdio.h>
int a=160,b=255,c,*pa=&a,*pb=&b,*pc=&c,stepnow=15,stepall=30;
unsigned char rgb[3],*p=rgb;
int main(){
printf("Test inline asm\n");
// __asm("\
// mov $789,%eax\n\
// mov %eax,a\
// ");
// __asm("\
// mov pa,%eax;\n\
// mov pb,%ebx;\n\
// mov (%eax),%ax\n\
// mov (%ebx),%bx\n\
// add %bx,%ax\n\
// mov stepnow,%bx\n\
// mul %bx\n\
// mov stepall,%bl\n\
// div %bl\n\
// mov pc,%ebx;\n\
// mov %al,(%ebx)\n\
// mov (%ebx),%ax\n\
// mov %ax,(%ebx)\n\
// ");
__asm("\
mov $1,%ax\n\
mov $0,%bx\n\
mov $5,%cx\n\
loop_start:\n\
cmp %bx,%cx\n\
jle loop_exit\n\
add %ax,%bx\n\
jmp loop_start\n\
loop_exit:\n\
mov %bx,c\n\
");
// __asm("\
// mov p,%eax\n\
// mov $1,%bl\n\
// mov $5,%bh\n\
// movb %bl,(%eax)\n\
// add $1,%eax\n\
// mov %bh,(%eax)\n\
// ");
//*pt=*pa*(step_all-step_now)/step_all+*pb*step_now/step_all;
// __asm("\
// mov stepall,%eax\n\
// mov stepnow,%ebx\n\
// sub %ebx,%eax\n\
// mov pa,%ebx\n\
// mov (%ebx),%bx\n\
// mul %bx\n\
// mov stepall,%ebx\n\
// div %bx\n\
// mov %eax,%ecx\n\
// mov pb,%eax\n\
// mov (%eax),%eax\n\
// mov stepnow,%ebx\n\
// mul %ebx\n\
// mov stepall,%ebx\n\
// div %bl\n\
// add %cl,%al\n\
// mov %al,c\n\
// ");
printf("c=%d",c);
return 0;
}

Dev C++调用汇编的更多相关文章

  1. C语言调用汇编

    程序的入口是main,在main里调用汇编的函数. 首先要解决怎么定义函数的问题 在C语言中,要extern 一个函数声明即可,然后这个函数在汇编里面实现. 在汇编里面,用EXPORT 把C语言定义的 ...

  2. 缓冲区溢出实战教程系列(二):dev c++编译汇编代码

    小伙伴们对我上一篇文章的反应完全出乎了我的意料,感谢大家对我的支持和认可.接下来我会精心的把这一系列课程设计好,尽量详细的展示给大家.上篇文章我列举了一个缓冲区溢出的小例子,并提到了dev c++.o ...

  3. c语言里如何调用汇编里的变量?

    c语言里如何调用汇编里的变量? 汇编语言:是声明全局变量 .globl _end_ofs _end_ofs: .word _end - _start c语言:声明这个变量,然后再调用这个变量 void ...

  4. C语言调用汇编实现字符串对换

    1. 前面配置arm交叉编译环境. 2. 配置好qemu-arm C语言代码string-switch.c: #include <stdio.h> #include <stdlib. ...

  5. 从linux0.11中起动部分代码看汇编调用c语言函数

    上一篇分析了c语言的函数调用栈情况,知道了c语言的函数调用机制后,我们来看一下,linux0.11中起动部分的代码是如何从汇编跳入c语言函数的.在LINUX 0.11中的head.s文件中会看到如下一 ...

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

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

  7. keil or c51 汇编调用c语言函数 容易忽视的问题

    最近,在用keil 写一个小程序时,想实践一下从汇编调用 C语言函数,我们都知道C语言调用汇编函数讨论得较多,但反过来,从汇编中调用C语言的函数未见深入分析:在开始的时候,还是忽视了一个问题,就是对现 ...

  8. Linux汇编与C互相调用

    一.简介 C语言调用汇编有两种方式:1.通过内嵌汇编  2.通过编译链接. 二.基础知识 对于C和汇编语言的接口主要有两个问题需要解决 1.调用者与被调用者的参数传递 正常的,定义一个函数总是希望它完 ...

  9. x64汇编第四讲,c / C++中调用x64汇编

    目录 x64汇编第四讲,c / C++中调用x64汇编 一丶简介 1.说明 二丶C/C++调用 asm64.asm函数. 1.配置asm参与生成 2.给Asm文件添加函数代码 3.C/C++调用asm ...

随机推荐

  1. InnoDB学习(一)之BufferPool

    我们知道InnoDB数据库的数据是持久化在磁盘上的,而磁盘的IO速度很慢,如果每次数据库访问都直接访问磁盘,显然严重影响数据库的性能.为了提升数据库的访问性能,InnoDB为数据库的数据增加了内存缓存 ...

  2. 断言(assert)简介

    java中的断言assert的使用 一.assertion的意义和用法 J2SE 1.4在语言上提供了一个新特性,就是assertion功能,他是该版本再Java语言方面最大的革新. 从理论上来说,通 ...

  3. Scala(三)【函数式编程】

    目录 一.方法和函数 1.方法 1)基本语法 2)简化原则 3)方法参数 2.函数 3.方法和函数的区别 二.高阶函数 三.匿名函数 四.柯里化 五.闭包 一.方法和函数 1.方法 1)基本语法 de ...

  4. C++字节对齐(对象大小)

    内部数据成员对齐参考这篇 https://www.cnblogs.com/area-h-p/p/10316128.html 这里只强调C++字节对齐特点 ①静态数据成员属于类域,在对象中不占大小 ②若 ...

  5. MediaPlayer详解

    [1]MediaPlayer 详细使用细则 [2]MediaPlayer使用详解_为新手准备 [3]MediaPlayer 概览

  6. C++之无子数

    题目如下: 1 #include <iostream> 2 3 using namespace std; 4 5 6 bool isThisNumhaveChild(int num); 7 ...

  7. 生成接口文档并同步到postman

    前言 当我们开发需要测试接口时,会遇到以下几个问题 1.如果接口过多,参数过多,一个个参数复制到postman简直能要了我的狗命,重复劳动过多. 2.如果接口过多,参数过多,编写接口文档给测试人员或者 ...

  8. [学习总结]4、Android的ViewGroup中事件的传递机制(一)

    本文主要针对dispatchTouchEvent,onInterceptTouchEvent,onTouchEvent三个方法,通过简单的例子来简单的介绍下. 根据字面意思的理解,dispatchTo ...

  9. Spring.DM版HelloWorld

    本文主要描述使用Spring.DM2.0,创建OSGi的HelloWorld演示程序,理解Spring.DM的OSGi框架实现机制.   环境描述: 项目 版本 Eclipse 3.7.x JDK 1 ...

  10. C#.NET编程小考30题错题纠错

    1)以下关于序列化和反序列化的描述错误的是( C). a) 序列化是将对象的状态存储到特定存储介质中的过程 b) 二进制格式化器的Serialize()和Deserialize()方法可以分别用来实现 ...