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 ...
随机推荐
- 学习java 7.8
学习内容: 被static修饰的不需要创建对象,直接用类名引用即可 内部类访问特点:内部类可以直接访问外部类的成员,包括私有 外部类访问内部类的成员,必须创建对象 成员内部类,内部类为私有,Outer ...
- 了解 Linkerd Service Mesh 架构
从较高的层次上看,Linkerd 由一个控制平面(control plane) 和一个 数据平面(data plane) 组成. 控制平面是一组服务,提供对 Linkerd 整体的控制. 数据平面由在 ...
- Logback设置保留日志文件个数
Logback日志文件占用存储空间太多,设置保留文件个数,清理之前的文件. 主要由如下三个参数配合使用 maxHistory ,可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件,,例如设置 ...
- OpenStack之三: 安装MySQL,rabbitmq, memcached
官网地址:https://docs.openstack.org/install-guide/environment-sql-database-rdo.html #:安装mysql [root@mysq ...
- 使用$.ajax方式实现页面异步访问,局部更新的效果
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- java 多线程的状态迁移 常用线程方法分析
一.线程的各个状态 图中的线程状态(Thread.Stat 中定义的Enum 名)NEW.RUNNABLE .TERMINATED.WAITING.TIMED_WAITING 和BLOCKED 都能够 ...
- kubernetes list/watch设计原理
overview kubernetes的设计里面大致上分为3部分: API驱动型的特点 (API-driven) 控制循环(control loops)与 条件触发 (Level Trigger) A ...
- 20 个 .NET 6 新增的 API
DateOnly & TimeOnly .NET 6 引入了两种期待已久的类型 - DateOnly 和 TimeOnly, 它们分别代表DateTime的日期和时间部分. DateOnly ...
- 魅族CMDB运维自动化实践
一.简介 原创:梁鹏 本文是根据魅族系统架构师梁鹏10月20日在msup携手魅族.Flyme.百度云主办的第十三期魅族技术开放日< 魅族CMDB运维自动化实践>演讲中的分享内容整理而成. ...
- shell脚本 用户登录服务器发送钉钉提醒
一.企业微信配置 1.获取AgentId(AppID).Secret .CropID.部门ID 创建一个企业微信应用获取到AgentId(AppID).Secret 2.获取CropID,点击 &qu ...