栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

MDK:在C语言和汇编语言中的相互调用

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MDK:在C语言和汇编语言中的相互调用

文章目录 一.代码编写 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
extern void Init_1(void);
int main(){
Init_1();
return 0;
}

执行代码,进入调试
调试如图:

二.C语言中调用汇编语言

1.修改代码
(1).c程序

#include
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 
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语言中,汇编语言体现了寄存器的使用,可以实现逐步改变变量值。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/316999.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号