文章目录
一.代码编写
1.参考代码
1.汇编语言
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;
2.C语言
#include<stdio.h>
extern void Init_1(void);
int main(){
Init_1();
return 0;
}
执行代码,进入调试
调试如图:
二.C语言中调用汇编语言
1.修改代码
(1).c程序
#include<stdio.h>
extern int Init_1(int x);
extern x=25; //在别处定义全局变量x=25
int main(){
Init_1(x); //main函数调用函数Init_1,参数为x=25
return 0;
}
(2).s程序
AREA My_Function,CODE,READONLY;
EXPORT Init_1;
Init_1
ADD R0,#100;
BX lr; 将寄存器R0的值返回到主函数
END;
2.调试代码
单步执行
继续执行
R0的寄存器的值由19变为7D
三.在汇编程序中调用C程序
1.修改代码
.c程序
#include <stdio.h>
extern int init_2(void); //声明汇编函数
int init_1(int x)
{
return x+100;
}
int main()
{
init_2(); //调用汇编函数
return 0;
}
.s程序
AREA My_Fuction,CODE,READONLY;
IMPORT init_1;引入外部函数,即C语言函数init_1
EXPORT init_2
init_2
MOV R0, #25;寄存器R0的值加上25再存入R0中
BL init_1;调用main中的init_1函数
BX lr;返回主函数
END;
2.调试程序
单步执行
四.实验总结
该实验将汇编语言调用在C语言中,汇编语言体现了寄存器的使用,可以实现逐步改变变量值。