- 一、混合编程的原因
- 二、C语言嵌入汇编语言
- 2.1 实现调用函数(无参数)
- 2.2 实现调用函数,有参数
- 三、汇编语言嵌入C语言
- 四、小结
- 五、参考
c语言对于我们来说还是比较容易理解的,而汇编语言的效率高,有效结合这两者的优点,会为我们编程带来更多便利。
二、C语言嵌入汇编语言 2.1 实现调用函数(无参数)c语言程序调用汇编语言里的函数,代码如下:
- main.c
#includeextern 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
- 在汇编函数那一行前设置断点,即可看到c语言调用汇编函数,如图:
- c语言调用汇编语言写的函数有参数有返回值,代码如下:
- main2.c:
#includeextern int Init_2(int); int main(){ int result=Init_2(10); return 0; }
- func2.s:
#includeextern int Init_2(int); int main(){ int result=Init_2(10); return 0; }
- 当汇编函数运行完之后,r0的值与我们所设想的一样为100,如下图:
- 在汇编语言中调用c语言函数,代码如下:
- main3.s:
AREA main,CODE,READonLY import addf ENTRY EXPORT __main __main mov r0,#10 ;给两个参数赋值 mov r1,#12 bl addf ;调用函数 end
- fun3.c
#includeint addf(int a,int b){ int result=a+b; return result; }
经过仿真调试,可以看到R0寄存器的与推出的值一样,为22
用keil5来试验c语言调用汇编语言和用汇编语言来调用c语言的过程都是一样的,无非就是调用的主体不同,不过汇编语言还是不太熟悉,需要进一步熟悉。
五、参考keil:C语言里面调用汇编程序



