栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

小录在这
  • 一、混合编程的原因
  • 二、C语言嵌入汇编语言
    • 2.1 实现调用函数(无参数)
    • 2.2 实现调用函数,有参数
  • 三、汇编语言嵌入C语言
  • 四、小结
  • 五、参考

一、混合编程的原因

c语言对于我们来说还是比较容易理解的,而汇编语言的效率高,有效结合这两者的优点,会为我们编程带来更多便利。

二、C语言嵌入汇编语言 2.1 实现调用函数(无参数)

c语言程序调用汇编语言里的函数,代码如下:

  • main.c
#include
extern void Init_1();
int main(){
	Init_1();
	return 0;
}

  • func.s
	AREA My_Function,CODE,READonLY ;固定格式
	EXPORT Init_1
		
Init_1
	MOV R1,#0
	MOV R2,#0
	
LOOP 
	CMP R1,#10
	BHS LOOP_END
	ADD R2,#1
	ADD R1,#1
	B LOOP
LOOP_END
	NOP
	
	END

  • 在汇编函数那一行前设置断点,即可看到c语言调用汇编函数,如图:
2.2 实现调用函数,有参数
  • c语言调用汇编语言写的函数有参数有返回值,代码如下:
  • main2.c:
#include
extern int Init_2(int);
int main(){
		int result=Init_2(10);
	return 0;
}

  • func2.s:
#include
extern int Init_2(int);
int main(){
		int result=Init_2(10);
	return 0;
}

  • 当汇编函数运行完之后,r0的值与我们所设想的一样为100,如下图:
三、汇编语言嵌入C语言
  • 在汇编语言中调用c语言函数,代码如下:
  • main3.s:
 AREA main,CODE,READonLY
	import addf
	ENTRY
	EXPORT __main

__main
	mov r0,#10 ;给两个参数赋值
	mov r1,#12
	bl addf ;调用函数
	end
  • fun3.c
#include
int addf(int a,int b){
	int result=a+b;
	return result;
}

经过仿真调试,可以看到R0寄存器的与推出的值一样,为22

四、小结

用keil5来试验c语言调用汇编语言和用汇编语言来调用c语言的过程都是一样的,无非就是调用的主体不同,不过汇编语言还是不太熟悉,需要进一步熟悉。

五、参考

keil:C语言里面调用汇编程序

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/297116.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号