今天终于用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相关推荐

  1. ARM中C和汇编混合编程及示例

    在嵌入式系统开发中,目前使用的主要编程语言是C和汇编,C++已经有相应的编译器,但是现在使用还是比较少的.在稍大规模的嵌入式软件中,例如含有OS,大部分的代码都是用C编写的,主要是因为C语言的结构比较 ...

  2. C和汇编混合编程----实现浮点数的加减乘除

    加法 C程序: #include "stdio.h"int main() {float a=1.0;float b=2.34;float c;c=a+b;printf(" ...

  3. C和汇编混合编程---栈平衡

    最近在搞C和汇编混合编程,对栈平衡有点小理解,记录一下 当我们调用一个API或者子程序时时,API和子程序可以理解为函数,我们不必在返回的时候平衡栈里面的函数参数,但C语言库函数要我们自己平衡栈数据, ...

  4. c和汇编混合编程----shellcode----弹出计算器

    先用c和汇编混合编程成功弹出计算器(在VC++里运行) #include "stdio.h" #include "windows.h"int main(int ...

  5. arm export 汇编_C/C++与汇编混合编程有什么好处?

    1.导语 当需要C/C++与汇编混合编程时,可以有以下两种处理策略: 若汇编代码较短,则可在C/C++源文件中直接内嵌汇编语言实现混合编程. 若汇编代码较长,可以单独写成汇编文件,最后以汇编文件的形式 ...

  6. arm汇编和c语言混合编程实验报告,实验三C语言和ARM汇编混合编程指导书.doc

    实验三C语言和ARM汇编混合编程指导书 实验三 1. 实验目的 掌握C语言和ARM汇编混合编程方法. 2. 实验设备 硬件:PC 机 一台 软件:Windows98/XP/2000 系统,ADS 1. ...

  7. 51汇编与c语言混合编程,C51与汇编混合编程详解

    C51与汇编混合编程详解 0750long | 2009-07-09 12:45:42    阅读:1257 发布文章 C51与汇编混合编程详解 C51和汇编混合编程(1)-C语言中嵌入汇编 1.在 ...

  8. arm学习笔记五(c/c++与arm汇编混合编程)

    混合编程 常见方式:  1 在c/c++程序中嵌入汇编指令   语法格式: __asm {           汇编语言程序         }  2 在汇编程序中访问c/c++定义的全局变量   示 ...

  9. C和汇编混合编程---do while

    环境:VC++ do while 会先执行do里面的循环体,执行完去执行while的条件判断,如果为真,继续执行do里面的循环体,如果为假,则结束循环 C程序: #include "stdi ...

最新文章

  1. go语言中的int类型
  2. 7.1 pdo 宝塔面板php_小白入门基础傻瓜式操作PHP面板安装使用_Bt宝塔面板
  3. 皮一皮:误删了一段代码后系统还能跑起来!
  4. python for android-Python-for-Android安装笔记
  5. 程序员深夜用Python跑神经网络,只为用中二动作关掉台灯
  6. kaggle房价预测特征意思_Kaggle实战-波士顿房价预测
  7. Oracle发布开源的轻量级 Java 微服务框架 Helidon 1
  8. 解析:Python适合哪些人学呢?
  9. 学习一门编程语言的基本步骤
  10. Swift - 邮件发送功能的实现
  11. 判断画布是否是图元格式画布
  12. 【VRP】基于matlab节约里程算法求解车辆路径规划问题【含Matlab源码 1166期】
  13. python敏感字替换_python实现敏感词过滤的几种方法
  14. 1999年中国十大优秀共享软件
  15. 【笔记】FFC 20624 Winter 09的mil与mm显示转换
  16. 音频转换成mp3,音频转mp3格式
  17. [c++]数组的逆输出
  18. .NET Core之EF Core
  19. 删除无限创建的子文件夹
  20. OPNET中业务设置——学习笔记

热门文章

  1. 【WXS全局对象】Date
  2. Odyssey.js – 使用现成模板在线创建互动的故事
  3. CSS3与页面布局学习笔记(三)——BFC、定位、浮动、7种垂直居中方法
  4. css 浮动和清除浮动
  5. CSS布局(五) 网页布局方式
  6. 记录一次cookie导致登录失败的惨案
  7. USACO 6.3 章节 你对搜索和剪枝一无所知QAQ
  8. poj 1862 Stripies/优先队列
  9. 企业QQ 增加在线交谈链接
  10. .Net Remoting(基本操作) - Part.2 (转)