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

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2016-8-11 14:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
为了保证程序调用时参数的正确传递,汇编语言程序的设计要遵守ATPCS。在汇编语言程序中使用EXPORT伪操作来声明,使得本程序可被其他程序调用。同时,在C语言程序调用该汇编语言程序之前,需要在C语言程序使用extern关键词来声明该汇编语言程序。在示例中,汇编语言程序strcopy完成字符串复制功能,C语言程序调用strcopy完成字符串的复制工作。: E! s+ p8 O7 i/ f" q- l) v
C语言程序调用汇编语言程序完成字符串拷贝。
7 ]0 Y2 k3 A- mC语言源程序:% w2 s/ s  W5 z( ?  u
#include <stdio.h>
/ P! c2 ^! h1 w' K7 {  h" Y- Cextern void strcopy(char *d,const char *s)  ;用extern声明一个函数为外部函数
* O9 K3 @5 q. H1 j3 F" {! L                                            ;可被其他文件中的函数调用, C9 ]9 B- ?  i3 U  C  j& n3 x
int main
2 y9 T% c4 n- z4 ?{const char *srcstr="First string-source";
( k2 K5 @/ T* _! P! R( Qchar *dststr="Second string-destination";
2 }4 B4 m$ y& h! h) [4 r! P1 sprintf("Before copying:\n");
' ]5 J( K7 H- A; eprintf("%s\n%s\n",srcstr,dststr);   
! H6 @+ C- B( I; k+ _strcopy(srcstr,dststr);                     ;调用汇编函数strcopy()
' ?/ m  _' x( i# Y; @8 a4 cprintf("After copying:\n");; e0 v5 T' E6 S
printf("%s\n%s\n",srcstr,dststr);
9 O+ R7 d. ~9 a' ~7 V- qreturn(0);5 Z1 L% S. ~5 Y
}: ~' y& t+ h' Z
汇编语言源程序:8 `" K! u" b: ]6 ]
AREA SCopy,CODE,READONLY& @# s' X' i# U1 _7 F: d! L, M
EXPORT strcopy          ;用EXPORT伪操作声明该变量可被其他文件引+ H$ |- T1 x& U# J7 _
                        ;用,相当于声明了一个全局变量4 s- u) Q4 E) k( _9 T
Strcopy                 ;R0指向目标字符串,R1指向源字符串+ v: F5 q2 |) B/ Y
LDRB    R2,[R1],#1      ;字节加载,并更新地址. e3 x% \7 P7 F, ]- x  K3 v5 L
STRB    R2,[R0],#1      ;字节保存,并更新地址0 h; E# t, [- @" Z
CMP     R2,#0          ;检测R2是否等于0
% m- [: [7 Y3 r0 X* ZBNE     strcopy         ;若条件不成立,则继续执行
$ A1 |0 a, A* ?2 g1 L1 wMOV    PC,LR            ;从子程序返回. }2 b/ Q: O1 d0 V9 ~1 A5 Z- D) m
END

该用户从未签到

2#
发表于 2016-8-11 14:35 | 只看该作者
支持一下,很不错哦!" i) R/ m# n& Q; [

该用户从未签到

3#
发表于 2016-8-11 14:45 | 只看该作者
资源多,学习不止步,共同进步
# }* m  V; e( b

该用户从未签到

4#
发表于 2016-8-12 10:56 | 只看该作者
谢谢楼主,一步步来,学习中……
2 I' h9 X; u' R- Q

该用户从未签到

5#
发表于 2016-8-12 11:47 | 只看该作者
楼主辛苦了!
& w7 F5 _% T6 G1 f. D; v" n3 y9 C6 I

该用户从未签到

6#
发表于 2016-8-15 11:45 | 只看该作者
支持一下,很不错哦!
% R4 o! |  {% t% F

该用户从未签到

7#
发表于 2016-8-16 10:13 | 只看该作者
谢谢O(∩_∩)O哈哈~谢谢O(∩_∩)O哈哈
( R/ M5 [. j  O& n! l
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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