基于MDK5下的STM32的C语言与汇编语言混合编程

本文介绍了如何在MDK5环境下进行STM32的C语言与汇编语言混合编程,包括C程序调用汇编、汇编调用C程序的步骤,并讲解了寄存器的使用规则,提供了调试过程中的实例展示。
摘要由CSDN通过智能技术生成

目录

一、在C程序中调用汇编程序

 二、修改汇编语言

三、在汇编程序中调用C程序

 四、寄存器使用规则

六、参考文献


一、在C程序中调用汇编程序

新建一个工程,这里我选择的芯片是STM32F103RC,配置如下:

接着创建一个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

 注:其中EXPORT是将C文件里的相关函数进行调用

       MOV R1,#0 MOV R2,#0 是将寄存器R1和R2赋值为0

       CMP R1,#10 BHS LOOP_END 是将寄存器R1与10进行比较,如果R1>10,就转到LOOP_END

       ADD R2,#1 ADD R1,#1 是将寄存器R2和R1自增1

       B LOOP 是代表再次进入循环

       END 是表示结束程序

由于本次的实验需要用到仿真调试,所以我要点击魔法棒中的Debug,将其中设置为如下图所示:

 配置好后,我们点击debug开始调试

点击单步调试Step,观察寄存器R1和R2里面值的变化

我们可以看到寄存器里的R1和R2从0依次递增到了A(即为10),然后跳出循环,结束程序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值