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

目录

一、示例

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

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

四、总结

五、参考文献


一、示例

在keil上新建c程序main.c和汇编程序fun.s

fun.s代码

 main.c代码

编译结果

在C程序中调用了汇编语言程序,R1 R2会从零开始一个一个的递加,直到R1等于10结束。

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

代码修改
c程序代码为

#include<stdio.h>
 
extern int Init_1(int);
 
int main()
{
	int x;
	
	x=10;
	
	Init_1(x);
	
	return 0;
		
}
	

 汇编程序代码为

        AREA test,CODE,READONLY
	    EXPORT Init_1
Init_1
		MOV R1,#0
LOOP
		CMP R1,#100
		BHS LOOP_END
		ADD R1,#1
		B LOOP
LOOP_END
        ADD R0,R1
		NOP		
		
		END

 编译运行

R0处显示成了6E及16进制的110,最终结果为110

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

代码

#include<stdio.h>
extern int sum(int a,int b);
int sum(int a,int b)
{
  int c;
	a=100;
	b=100;
	c=a+b;
	return c;
}
 
    AREA MYDATA, DATA
	IMPORT sum
    AREA MYCODE, CODE
	ENTRY
	EXPORT __main
 
__main
 
    BL sum
	
	BX LR
	
	END

运行结果

汇编函数调用C语言main函数,将结果200(及16进制的C8)赋给寄存器R0

四、总结

 通过本次实验,学会了如何在C语言程序里调用汇编程序,以及如何在汇编程序里调用C语言程序,加深了对汇编程序和c程序的理解。

五、参考文献

在Keil环境下基于STM32的C语言与汇编语言混合编程_迷信的兔子的博客-CSDN博客目录一、C语言程序里面调用汇编程序(一)、代码编写(二)、观察结果二、对参考代码进行修改(一)、代码修改(二)、程序运行三、在汇编函数中调用一个 C语言写的函数(一)、代码编写(二)、程序运行四、总结五、参考文献一、C语言程序里面调用汇编程序keil软件相关环境构建参考:Keil嵌入式开发环境下基于STM32汇编程序的编写_迷信的兔子的博客-CSDN博客(一)、代码编写1.C语言程序(main函数)#include<stdi...https://blog.csdn.net/qq_48273416/article/details/120729304?utm_source=app&app_version=4.15.0&code=app_1562916241&uLinkId=usr1mkqgl919blen

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值