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

一、混合编程的原因

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

二、C语言嵌入汇编语言

2.1 实现调用函数(无参数)

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

  • main.c
#include<stdio.h>
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<stdio.h>
extern int Init_2(int);
int main(){
		int result=Init_2(10);
	return 0;
}

  • func2.s:
	AREA My_Function,CODE,READONLY
	EXPORT Init_2
		
Init_2
	ADD R0,R0,#100
	BX LR ;返回
	END

  • 当汇编函数运行完之后,r0的值与我们所设想的一样为110,如下图:
    在这里插入图片描述

三、汇编语言嵌入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<stdio.h>
int addf(int a,int b){
	int result=a+b;
	return result;
}

经过仿真调试,可以看到R0寄存器的与推出的值一样,为22
在这里插入图片描述

四、小结

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

五、参考

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值