在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 1846|回复: 1

[资料] C语言程序调用汇编语言程序

[复制链接]
发表于 2016-3-10 14:40:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x

为了保证程序调用时参数的正确传递,汇编语言程序的设计要遵守ATPCS。在汇编语言程序中使用EXPORT伪操作来声明,使得本程序可被其他程序调用。同时,在C语言程序调用该汇编语言程序之前,需要在C语言程序使用extern关键词来声明该汇编语言程序。在示例中,汇编语言程序strcopy完成字符串复制功能,C语言程序调用strcopy完成字符串的复制工作。

C语言程序调用汇编语言程序完成字符串拷贝。

C语言源程序:

#include <stdio.h>

extern void strcopy(char *d,const char *s)  ;用extern声明一个函数为外部函数

                                            ;可被其他文件中的函数调用

int main

{const char *srcstr="First string-source";

char *dststr="Second string-destination";

printf("Before copying:\n");

printf("%s\n%s\n",srcstr,dststr);   

strcopy(srcstr,dststr);                     ;调用汇编函数strcopy()

printf("After copying:\n");

printf("%s\n%s\n",srcstr,dststr);

return(0);

}

汇编语言源程序:

AREA SCopy,CODE,READONLY

EXPORT strcopy          ;用EXPORT伪操作声明该变量可被其他文件引

                        ;用,相当于声明了一个全局变量

Strcopy                 ;R0指向目标字符串,R1指向源字符串

LDRB    R2,[R1],#1      ;字节加载,并更新地址

STRB    R2,[R0],#1      ;字节保存,并更新地址

CMP     R2,#0          ;检测R2是否等于0

BNE     strcopy         ;若条件不成立,则继续执行

MOV    PC,LR            ;从子程序返回

END

凌阳教育,专注嵌入式人才培养多年,完善的培养方案,强大的师资,合理的课程安排,成功从小白蜕变为嵌入式工程师。想了解凌阳教育,或者获得更多嵌入式学习资料的免费下载,请点击www.sunplusedu.com访问凌阳教育官网

发表于 2016-3-19 12:56:35 | 显示全部楼层
谢谢分享!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-26 01:23 , Processed in 0.029248 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表