- C语言调用汇编函数
- 编写代码
- 编译调试
- Init_1函数的类型改为 int Init_1(init)
- 1.修改代码
- 编译调试
- 汇编函数调用C语言函数
- 编写代码 g.c及修改fun代码
- 直接debug
1.创建新uvision项目命名为stu2
2.创建新的Asm File .s
3.在.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
4.同一位置创建main.c
5.在main.c中编写代码如下
#include编译调试extern void Init_1(void); int main(){ Init_1 (); return 0; }
build结果
debug结果
R1 R2值正确变为10
// fun.s AREA My_Function,CODE ,READONLY EXPORT Init_1 Init_1 ADD R0,#100
此函数功能修改为 传入一个整型数x,函数运行后返回整型数 x+100
//main.c #include编译调试extern void Init_1(int x); int main(){ Init_1 (0); return 0; }
build结果
debug结果
R0值变为100符合预期
汇编函数调用C语言函数 编写代码 g.c及修改fun代码g.c
#includeint g( int a, int b, int c, int d, int e, int f ) { printf("e=%dn", e); printf("f=%dn", f); return (a+b+c+d+e+f); }
fun.s
EXPORT f AREA f ,CODE, READONLY import g MOV R0, #1 ADD R1, R0, R0 ADD R2, R1, R0 ADD R3, R2, R0 ADD R4, R3, R0 ADD R5, R4, R0 STR R4, [SP, #-4]! STR R5, [SP, #-4]! BL g ADD SP, SP, #4 ADD SP, SP, #4 STOP B STOP END直接debug
链接
STM32下C语言与汇编语言混合编程.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)