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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
为了保证程序调用时参数的正确传递,汇编语言程序的设计要遵守ATPCS。在汇编语言程序中使用EXPORT伪操作来声明,使得本程序可被其他程序调用。同时,在C语言程序调用该汇编语言程序之前,需要在C语言程序使用extern关键词来声明该汇编语言程序。在示例中,汇编语言程序strcopy完成字符串复制功能,C语言程序调用strcopy完成字符串的复制工作。
9 K( W# S0 ~8 J( oC语言程序调用汇编语言程序完成字符串拷贝。
! [2 d; W- L( R* A5 Q6 DC语言源程序:
) _4 o; ]# J5 ^; _8 L6 b4 v#include <stdio.h>5 L' Q% x$ s6 P; L; `
extern void strcopy(char *d,const char *s)  ;用extern声明一个函数为外部函数
9 b" C" d; _/ e& h! j                                            ;可被其他文件中的函数调用
; R+ G0 h4 D0 o" z5 F2 n. dint main
" f$ A9 o+ r! ~{const char *srcstr="First string-source";
0 }. L; _( j1 F6 x! Nchar *dststr="Second string-destination";7 X" Q6 v2 \2 `4 w+ A
printf("Before copying:\n");
7 U8 M0 Y1 @2 \8 I! K- ]6 k, Kprintf("%s\n%s\n",srcstr,dststr);   
" Q* z  f6 H& G' I, Dstrcopy(srcstr,dststr);                     ;调用汇编函数strcopy(); a" P" ?' ?% i: r) y
printf("After copying:\n");
: {0 C. f* X/ M+ e5 {+ B* G, |7 iprintf("%s\n%s\n",srcstr,dststr);
2 x3 E& H5 M) l8 D' U$ D& Xreturn(0);6 Y# z* j" {% @$ @) v
}
4 m: O, b: W; N$ V( ]* t8 ]& `/ z7 P# P) j* f汇编语言源程序:
. Z; A" }: V4 L' d0 T3 a1 Z1 `! `AREA SCopy,CODE,READONLY, ^" j( n% E# F% ^
EXPORT strcopy          ;用EXPORT伪操作声明该变量可被其他文件引& P3 m8 y- o2 a9 I
                        ;用,相当于声明了一个全局变量. \+ l! {6 f" d3 u. @0 {) u
Strcopy                 ;R0指向目标字符串,R1指向源字符串
9 \0 ]+ _+ Z3 N0 n1 b* r% y2 g! M( JLDRB    R2,[R1],#1      ;字节加载,并更新地址( G! m6 @! i" {
STRB    R2,[R0],#1      ;字节保存,并更新地址
# P3 o% _8 R8 w( W+ b7 GCMP     R2,#0          ;检测R2是否等于0
% I% V+ M! i  z: u& [5 Z7 ^) q9 eBNE     strcopy         ;若条件不成立,则继续执行
' ^+ o0 ~1 ~" C# JMOV    PC,LR            ;从子程序返回
' J* w5 x1 @9 Y) m! R/ d: |7 s6 @) MEND

该用户从未签到

7#
发表于 2016-8-16 10:13 | 只看该作者
谢谢O(∩_∩)O哈哈~谢谢O(∩_∩)O哈哈9 S4 c  ]/ c) D: ^5 T* u

该用户从未签到

6#
发表于 2016-8-15 11:45 | 只看该作者
支持一下,很不错哦!
* G4 H- q6 `# \

该用户从未签到

5#
发表于 2016-8-12 11:47 | 只看该作者
楼主辛苦了!
, K+ q. T4 t, a6 `/ f; d

该用户从未签到

4#
发表于 2016-8-12 10:56 | 只看该作者
谢谢楼主,一步步来,学习中……
5 u6 c' V& ?2 I4 a! r3 f

该用户从未签到

3#
发表于 2016-8-11 14:45 | 只看该作者
资源多,学习不止步,共同进步
# x  ]3 ?0 [# z/ _4 W5 o' [' j, X

该用户从未签到

2#
发表于 2016-8-11 14:35 | 只看该作者
支持一下,很不错哦!' B, f; n5 u  `7 V' B* u$ Z- l
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 00:24 , Processed in 0.140625 second(s), 25 queries , Gzip On.

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

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

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