STM32的C与汇编语言混合编程

本文介绍了如何在Keil环境下进行C语言与汇编的混合编程,包括C调用汇编函数和汇编调用C函数。通过实例展示了如何修改函数类型,如将汇编函数Init_1改为接受整型参数并返回加100后的值,并展示了调试过程中的寄存器变化。此外,还展示了如何在汇编程序中调用C语言函数,验证了参数正确传递并得到预期结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、在Keil下完成C语言的汇编程序调用

 二、原汇编语言 Init_1函数的类型改为 int Init_1(init) ,此函数功能修改为 传入一个整型数x,函数运行后返回整型数 x+100

三、汇编函数中调用一个 C语言写的函数


一、在Keil下完成C语言的汇编程序调用

  在Keil的项目下创建main.c的C语言程序和Fun.s的汇编程序:

   main.c的代码:

  Fun.s:

可以看到如下的调试结果:

main函数调用了Init()

成功调用Func.s文件

 二、原汇编语言 Init_1函数的类型改为 int Init_1(init) ,此函数功能修改为 传入一个整型数x,函数运行后返回整型数 x+100

  首先修改main.c中的内容:

Fun.s中的内容

 调试结果:

调用新的Init_1函数

 寄存器中出现相应的值

  总结:在Init_1中我们传入了一个值为25的参数,在函数中的原值为100,在寄存器R0中出现的7D正是

25+100的16进制的值,这说明成功调用了传入参数的函数。

三、汇编函数中调用一个 C语言写的函数

  新建一个test.s文件和fun.c文件:

调试结果:

 由于a=100,b=100,c=200,而200的16进制为C8,说明C语言函数被调用成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值