在c语言中调用汇编语言
1.新建一个工程
文件命名
选择仿真器
勾选配置
添加文件
添加c文件
编写代码
#include<stdio.h>
extern void Init_1(void);
int main()
{
Init_1();
return 0;
}
添加汇编文件
编写代码
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
编译,无错
更改设置
在debug中勾选Use Simulator,将dialog dll下改为DARMSTM.DLL ,将parameter下改为-pSTM32F103C8
进行debug调试
汇编语言的改写
将原汇编语言 Init_1函数的类型改为 int Init_1(init) ,此函数功能修改为 传入一个整型数x,函数运行后返回整型数 x+100
c文件改写
#include<stdio.h>
extern int Init_1(int x);
int main()
{
Init_1(5);
return 0;
}
汇编文件改写
AREA My_Function,CODE,READONLY
EXPORT Init_1
Init_1
ADD R0,#100
END
编译,无错
进行debug调试
在汇编语言中调用c语言
在c文件中写入函数Init_1,将主函数放入汇编文件当中,可以发现,将以前的导入函数EXPORT改为了导入INPORT
c文件改写
#include<stdio.h>
extern int Init_1();
int Init_1()
{
int x=5;
return x+100;
}
汇编文件改写
IMPORT Init_1
AREA MYCODE, CODE
EXPORT __main
__main
BL Init_1
END
编译,无错
进行debug调试,F5
总结
通过本次实验,学会了c程序与汇编程序的互相调用
参考文献
Keil下STM32的C与汇编语言混合编程
ADS1.2 在汇编代码中调用C函数
arm编程,关于函数调用形参实参在通用寄存器和栈帧里的对应关系。用汇编透视c语法操作