目录
一 例子
二 将原汇编语言里面的init-1改为 int init(intx)的,并且将此函数的功能修改为传入一个整形x,函数运行后返回整形数x+100.
三 在汇编函数中调用一个c语言写的函数
四 总结
五 参考文献
一 例子
使用keil在例子的引导下新建c程序main.c和汇编程序fun.s
main.c
fun.s
如上图可见,在c程序中用exten void init-1(void)即可调用汇编语言程序,左上方的寄存器R1 R2就会遵循汇编程序的语法,从零开始一个一个的递加,知道R1等于10结束。
二 将原汇编语言里面的init-1改为 int init(intx)的,并且将此函数的功能修改为传入一个整形x,函数运行后返回整形数x+100.
如上所示,将源程序里面的init-1改为int init(intx)然后在调用新更改的汇编语言,具体如下
如上所示的我们自定义的参数为10,然后使用新的调用语句,调用写成的新汇编语言,参数为10加上要求的x+100等于110,在寄存器R0处显示出了6E,而6E就正好是16进制的110,完成了本次要求。
三 在汇编函数中调用一个c语言写的函数
将c程序与汇编程序改成如下
main.c
fan.s
此时就是用汇编语言里面用import sum语句调用C程序里面名为sum的段落代码,然后调试程序如下。
然后可见在寄存器R0处得出了64的结果,在程序里面是设定为50+50得出100的结果,而64就是16进制的100,完成程序的调用。
四 总结
本次实验学习了在stm32的环境下用c和汇编语言混合编程,而之前没有尝试过,因此出现不少的问题,而经过同学和网络的帮助,问题一一解决,完成了本次的实验。
五 参考文献
https://blog.csdn.net/qq_45659777/article/details/120651310?utm_source=app&app_version=4.15.0&code=app_1562916241&ulinkId=usr1mkqgl919blen



