Dev C++调用汇编
参考:
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++调用汇编的更多相关文章
- C语言调用汇编
程序的入口是main,在main里调用汇编的函数. 首先要解决怎么定义函数的问题 在C语言中,要extern 一个函数声明即可,然后这个函数在汇编里面实现. 在汇编里面,用EXPORT 把C语言定义的 ...
- 缓冲区溢出实战教程系列(二):dev c++编译汇编代码
小伙伴们对我上一篇文章的反应完全出乎了我的意料,感谢大家对我的支持和认可.接下来我会精心的把这一系列课程设计好,尽量详细的展示给大家.上篇文章我列举了一个缓冲区溢出的小例子,并提到了dev c++.o ...
- c语言里如何调用汇编里的变量?
c语言里如何调用汇编里的变量? 汇编语言:是声明全局变量 .globl _end_ofs _end_ofs: .word _end - _start c语言:声明这个变量,然后再调用这个变量 void ...
- C语言调用汇编实现字符串对换
1. 前面配置arm交叉编译环境. 2. 配置好qemu-arm C语言代码string-switch.c: #include <stdio.h> #include <stdlib. ...
- 从linux0.11中起动部分代码看汇编调用c语言函数
上一篇分析了c语言的函数调用栈情况,知道了c语言的函数调用机制后,我们来看一下,linux0.11中起动部分的代码是如何从汇编跳入c语言函数的.在LINUX 0.11中的head.s文件中会看到如下一 ...
- KEIL C51 中嵌入汇编以及C51与A51间的相互调用
如何在 KEIL C51(v6.21) 中调用汇编函数的一个示例 有关c51调用汇编的方法已经有很多帖子讲到,但是一般只讲要点,很少有对整个过程作详细描述,对于初学者是不够的,这里笔者通过一个简单例子 ...
- keil or c51 汇编调用c语言函数 容易忽视的问题
最近,在用keil 写一个小程序时,想实践一下从汇编调用 C语言函数,我们都知道C语言调用汇编函数讨论得较多,但反过来,从汇编中调用C语言的函数未见深入分析:在开始的时候,还是忽视了一个问题,就是对现 ...
- Linux汇编与C互相调用
一.简介 C语言调用汇编有两种方式:1.通过内嵌汇编 2.通过编译链接. 二.基础知识 对于C和汇编语言的接口主要有两个问题需要解决 1.调用者与被调用者的参数传递 正常的,定义一个函数总是希望它完 ...
- x64汇编第四讲,c / C++中调用x64汇编
目录 x64汇编第四讲,c / C++中调用x64汇编 一丶简介 1.说明 二丶C/C++调用 asm64.asm函数. 1.配置asm参与生成 2.给Asm文件添加函数代码 3.C/C++调用asm ...
随机推荐
- 用友低代码开发平台YonBuilder首次亮相DevRun开发者沙龙
2020年的今天,没有人会再质疑企业上云的必要性与价值所在.从高科技行业到传统领域,大大小小的企业都希望走在变革道路前列,通过企业云加快业务数字化转型,更好地维护和管理企业数据. 然而,大多数企业都很 ...
- 巩固javaweb第十三天
巩固内容: HTML 表格 表格由 <table> 标签来定义.每个表格均有若干行(由 <tr> 标签定义),每行被分割为若干单元格(由 <td> 标签定义).字母 ...
- 文件和目录之间建立链接 (ln)
- Java【常用的日期操作】
目录 1.设置时间 2.获取年月日时分秒 3.通过运算获取时间 4.和Date类转换 5.格式化时间 6.新功能LocalDate:当前日期格式化 7.示例 java.util.Calendar 类是 ...
- nodejs-CommonJS规范
JavaScript 标准参考教程(alpha) 草稿二:Node.js CommonJS规范 GitHub TOP CommonJS规范 来自<JavaScript 标准参考教程(alpha) ...
- mysql之对象创建
1 --创建表空间 2 create tablespace tablespace_name 3 innodb and ndb: 4 add datafile 'file_name' 5 innodb ...
- hive 启动不成功,报错:hive 启动报 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/mapred/MRVersi
1. 现象:在任意位置输入 hive,准备启动 hive 时,报错: Exception in thread "main" java.lang.NoClassDefFoundErr ...
- 4、Redis基础
redis性能 1.关于测试性能 官方自带的测试性能的工具 redis-benchmark 压力测试工具 #进行压力测试.需求:测试:100个并发连接,100000个请求 #redis-benchma ...
- rpm-build方式制作rpm包
目录 一.简介 二.具体操作 一.简介 可以将编译完成的服务打成rpm包放到私有仓库了,用于自定义的各种软件进行安装部署配置. 二.具体操作 1.安装软件,这个命令将构建rpm包 yum -y ins ...
- Python绘制饼图
Python绘制饼图 1.1 对应代码如下图所示 import matplotlib.pyplot as pltfrom pylab import mplmpl.rcParams['font.sans ...