C和汇编混合编程----printf
今天终于用c和汇编成功调试出第一个程序了,程序很简单,我太菜了,花了几天的时间,才调试好,来记录一下,以防忘记了
先上程序:
#include "stdio.h"
int main()
{char *str="begin\n";
// printf("begin\n");__asm{push str ;将str的值就是字符串begin首地址压入栈call printf ;调用printf函数add esp,4 ;平衡栈数据}return 0;
}
程序的功能就是输出begin,代码解释写在程序中了
结果:
注意:
- 每个函数调用时,需要参数时,从栈顶取,根据参数的需要,依次往下取
比如说,输出两个参数:
#include "stdio.h"int main()
{printf("begin\n");char *str="a=%d,b=%d\n";__asm{push 3push 4call eeeeadd esp,8mov eax,3jmp endeeee: mov eax,[esp+8]mov ebx,[esp+4]xchg eax,ebxpush ebxpush eaxpush strcall printfadd esp,12retend: nop}return 0;
}
- 函数调用完需要平衡栈数据,上面程序中
mov esp,4
就是平衡栈数据
如果没有平衡会报错,如图:
C和汇编混合编程----printf相关推荐
- ARM中C和汇编混合编程及示例
在嵌入式系统开发中,目前使用的主要编程语言是C和汇编,C++已经有相应的编译器,但是现在使用还是比较少的.在稍大规模的嵌入式软件中,例如含有OS,大部分的代码都是用C编写的,主要是因为C语言的结构比较 ...
- C和汇编混合编程----实现浮点数的加减乘除
加法 C程序: #include "stdio.h"int main() {float a=1.0;float b=2.34;float c;c=a+b;printf(" ...
- C和汇编混合编程---栈平衡
最近在搞C和汇编混合编程,对栈平衡有点小理解,记录一下 当我们调用一个API或者子程序时时,API和子程序可以理解为函数,我们不必在返回的时候平衡栈里面的函数参数,但C语言库函数要我们自己平衡栈数据, ...
- c和汇编混合编程----shellcode----弹出计算器
先用c和汇编混合编程成功弹出计算器(在VC++里运行) #include "stdio.h" #include "windows.h"int main(int ...
- arm export 汇编_C/C++与汇编混合编程有什么好处?
1.导语 当需要C/C++与汇编混合编程时,可以有以下两种处理策略: 若汇编代码较短,则可在C/C++源文件中直接内嵌汇编语言实现混合编程. 若汇编代码较长,可以单独写成汇编文件,最后以汇编文件的形式 ...
- arm汇编和c语言混合编程实验报告,实验三C语言和ARM汇编混合编程指导书.doc
实验三C语言和ARM汇编混合编程指导书 实验三 1. 实验目的 掌握C语言和ARM汇编混合编程方法. 2. 实验设备 硬件:PC 机 一台 软件:Windows98/XP/2000 系统,ADS 1. ...
- 51汇编与c语言混合编程,C51与汇编混合编程详解
C51与汇编混合编程详解 0750long | 2009-07-09 12:45:42 阅读:1257 发布文章 C51与汇编混合编程详解 C51和汇编混合编程(1)-C语言中嵌入汇编 1.在 ...
- arm学习笔记五(c/c++与arm汇编混合编程)
混合编程 常见方式: 1 在c/c++程序中嵌入汇编指令 语法格式: __asm { 汇编语言程序 } 2 在汇编程序中访问c/c++定义的全局变量 示 ...
- C和汇编混合编程---do while
环境:VC++ do while 会先执行do里面的循环体,执行完去执行while的条件判断,如果为真,继续执行do里面的循环体,如果为假,则结束循环 C程序: #include "stdi ...
最新文章
- go语言中的int类型
- 7.1 pdo 宝塔面板php_小白入门基础傻瓜式操作PHP面板安装使用_Bt宝塔面板
- 皮一皮:误删了一段代码后系统还能跑起来!
- python for android-Python-for-Android安装笔记
- 程序员深夜用Python跑神经网络,只为用中二动作关掉台灯
- kaggle房价预测特征意思_Kaggle实战-波士顿房价预测
- Oracle发布开源的轻量级 Java 微服务框架 Helidon 1
- 解析:Python适合哪些人学呢?
- 学习一门编程语言的基本步骤
- Swift - 邮件发送功能的实现
- 判断画布是否是图元格式画布
- 【VRP】基于matlab节约里程算法求解车辆路径规划问题【含Matlab源码 1166期】
- python敏感字替换_python实现敏感词过滤的几种方法
- 1999年中国十大优秀共享软件
- 【笔记】FFC 20624 Winter 09的mil与mm显示转换
- 音频转换成mp3,音频转mp3格式
- [c++]数组的逆输出
- .NET Core之EF Core
- 删除无限创建的子文件夹
- OPNET中业务设置——学习笔记