|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
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 |
|