找回密码
 注册
关于网站域名变更的通知
查看: 528|回复: 3
打印 上一主题 下一主题

C语言程序调用汇编语言程序

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2016-7-13 15:03 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

EDA365欢迎您登录!

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

x
为了保证程序调用时参数的正确传递,汇编语言程序的设计要遵守ATPCS。在汇编语言程序中使用EXPORT伪操作来声明,使得本程序可被其他程序调用。同时,在C语言程序调用该汇编语言程序之前,需要在C语言程序使用extern关键词来声明该汇编语言程序。在示例中,汇编语言程序strcopy完成字符串复制功能,C语言程序调用strcopy完成字符串的复制工作。. E, m( h: U6 _  ^# ~. L
C语言程序调用汇编语言程序完成字符串拷贝。' B) w, Q5 g& X
C语言源程序:2 x' Z) t2 {5 t, j
#include <stdio.h>. p, X( U) u8 W& ?3 [2 |( s
extern void strcopy(char *d,const char *s)  ;用extern声明一个函数为外部函数" _5 H, O) u9 v1 b- ^3 J
                                            ;可被其他文件中的函数调用4 E* n+ t. a* y- ?
int main# r3 G  w* k1 ~; E4 j
{const char *srcstr="First string-source";
& w! v# i( d" X5 p3 Kchar *dststr="Second string-destination";
9 ?; {+ l$ H( {printf("Before copying:\n");1 X8 U* y( W: U
printf("%s\n%s\n",srcstr,dststr);   
: x. z! o/ L% s+ Rstrcopy(srcstr,dststr);                     ;调用汇编函数strcopy()
5 p" a- g& q6 W. dprintf("After copying:\n");6 w, H/ @* B; z( `
printf("%s\n%s\n",srcstr,dststr);9 j7 X4 l6 C, d* Z- j$ p
return(0);6 q) F) Y% H  E, V: Q
}  Z  U* J* I- |$ C- V6 M" X
汇编语言源程序:
! r" a" s4 @. o" R# u0 eAREA SCopy,CODE,READONLY
' |9 q' l! ~/ K5 UEXPORT strcopy          ;用EXPORT伪操作声明该变量可被其他文件引
6 q2 Q$ p: e* x& r+ M7 J                        ;用,相当于声明了一个全局变量: Y1 c- T3 Y: h
Strcopy                 ;R0指向目标字符串,R1指向源字符串
) X* F1 C/ ], _( ALDRB    R2,[R1],#1      ;字节加载,并更新地址
$ f* ]7 R' R, a" XSTRB    R2,[R0],#1      ;字节保存,并更新地址3 a+ ]( d, n7 f- j6 d. Z1 U6 ?- Y
CMP     R2,#0          ;检测R2是否等于0* x8 l# w# }& `4 a" P
BNE     strcopy         ;若条件不成立,则继续执行
! b" V  T' E* g/ BMOV    PC,LR            ;从子程序返回
: I0 ?4 o  ]- IEND

该用户从未签到

4#
发表于 2016-7-18 19:05 | 只看该作者
路过捧场,谢谢分享!
7 |; q2 ]: X1 m. o" S( ?

该用户从未签到

3#
发表于 2016-7-14 15:00 | 只看该作者
感谢楼主分享!!!) d, [9 A) M" g. F% t  t# N& t6 ]

该用户从未签到

2#
 楼主| 发表于 2016-7-13 15:03 | 只看该作者
看贴学心得,回贴是美德
  g, w; u# o& ]: P/ V
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-23 22:37 , Processed in 0.156250 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表