#include
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
#include
extern int Init_1(int);
int main(){
int result=Init_1(10);
return result;
}
func.s:
AREA My_Function,CODE,READONLY
EXPORT Init_1
Init_1
ADD R0,R0,#100
BX LR ;
END
当汇编函数运行完之后,r0的值与我们所设想的一样为110,如下图:
AREA main,CODE,READONLY
import addf
ENTRY
EXPORT __main
__main
mov r0,#10 ;给两个参数赋值
mov r1,#12
bl addf ;调用函数
end
fun3.c:
#include
int addf(int a,int b){
int result=a+b;
return result;
}
用keil5来试验c语言调用汇编语言和用汇编语言来调用c语言的过程都是一样的,无非就是调用的主体不同,不过汇编语言还是不太熟悉,需要进一步熟悉。
参考文献
STM32的C与汇编语言的混合编程