目录
一、在keil5里面利用C语言调用汇编函数
1.建立新工程
2.编辑代码
C语言代码编辑:
汇编语言编辑
3.编译调试
二、改写汇编程序
1.C程序改写
2.汇编程序改写
3.编译调试
三、在汇编程序中调用C语言中的函数
一、在keil5里面利用C语言调用汇编函数
1.建立新工程
首先点击Project里面的 New uVision Project...
然后输入文件名,点击保存即可。
选用芯片
然后进行配置(如图):
2.编辑代码
首先在左上方工程下右击Source Group ,选择Add New Item to Group.......,
C语言代码编辑:
先创建C文件,点击C File(.c),然后输入name,点击Add
然后输入C语言代码
#include<stdio.h>
extern void Init_1(void);
int main()
{
Init_1();
return 0;
}
汇编语言编辑
还是在左上方工程下右击Source Group ,选择Add New Item to Group.......,
然后选择 Asm File(.s),输入name,点击Add即可。
然后输入汇编代码
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
3.编译调试
首先点击魔法棒,
然后进行设置,点击Debug,勾选Use Simulator
进行编译,没有错误,
点击图示图标进行调试,
二、改写汇编程序
将原汇编语言 Init_1函数的类型改为 int Init_1(init) ,此函数功能修改为 传入一个整型数x,函数运行后返回整型数 x+100。
1.C程序改写
代码:
#include<stdio.h>
extern int Init_1(int x);
int main()
{
Init_1(5);
return 0;
}
2.汇编程序改写
代码:
AREA My_Function,CODE,READONLY
EXPORT Init_1
Init_1
ADD R0,#100
END
3.编译调试
点击编译,没有错误,
点击图标进行调试,
三、在汇编程序中调用C语言中的函数
1.C语言程序改写
代码:
#include<stdio.h>
extern int Init_1();
int Init_1()
{
int x=5;
return x+100;
}
2.汇编程序改写
代码:
IMPORT Init_1
AREA MYCODE, CODE
EXPORT __main
__main
BL Init_1
END
3.编译调试
点击调试,按F5进入断点
五、参考文献
(6条消息) arm编程,关于函数调用形参实参在通用寄存器和栈帧里的对应关系。用汇编透视c语法操作_ZHONGkunjia的专栏-CSDN博客
https://blog.csdn.net/ZHONGkunjia/article/details/51184489
ADS1.2 在汇编代码中调用C函数 (eepw.com.cn)
http://lionwq.spaces.eepw.com.cn/articles/article/item/17475/
C语言在ARM中函数调用时,栈是如何变化的? - 云+社区 - 腾讯云 (tencent.com)
https://cloud.tencent.com/developer/article/1593645
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)