STM32的C与汇编语言混合编程
1.keli下c语言调用汇编程序
2.将原汇编语言 Init_1函数的类型改为 int Init_1(init) ,此函数功能修改为 传入一个整型数x,函数运行后返回整型数 x+100。 请编程实现,并仿真跟踪调试;
3.在汇编函数中调用一个C语言写的函数
1.keli下c语言调用汇编程序
在项目下新建文件main.c和Func.s:
其中main.c的代码:
#include<stdio.h>
extern void Init_1(void);
int main(){
Init_1();
return 0;
}
Fun.s的代码:
AREA My_Function,CODE,READONLY
EXPORT Init_1
Init_1
MOV R1,#666
MOV R2,#888
LOOP
CMP R1,#10
BHS LOOP_END
ADD R2,#1
ADD R1,#1
B LOOP
LOOP_END
NOP
END
编译:
二.将原汇编语言 Init_1函数的类型改为 int Init_1(init) ,此函数功能修改为 传入一个整型数x,函数运行后返回整型数 x+100。
1.修改代码
main.c文件:
# include<stdio.h>
extern int Init_1(int x);
int main(){
int xx = Init_1(10);
printf("%d", xx);
return 0;
}
Function.s文件:
AREA MY_Function,CODE,READONLY
EXPORT Init_1
Init_1
ADD R0,#100
MOV PC,LR
LOOP
CMP R1,#10
BHS LOOP_END
ADD R2,#1
ADD R1,#1
B LOOP
LOOP_END
NOP
END
编译:
三.在汇编函数中调用一个C语言写的函数
1.Func.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;
}
2.test.s文件:
AREA MYDATA, DATA
IMPORT sum
AREA MYCODE, CODE
ENTRY
EXPORT __main
__main
BL sum
BX LR
END
3.编译结果:
可以看到C函数成功的被调用