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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
为了保证程序调用时参数的正确传递,汇编语言程序的设计要遵守ATPCS。在汇编语言程序中使用EXPORT伪操作来声明,使得本程序可被其他程序调用。同时,在C语言程序调用该汇编语言程序之前,需要在C语言程序使用extern关键词来声明该汇编语言程序。在示例中,汇编语言程序strcopy完成字符串复制功能,C语言程序调用strcopy完成字符串的复制工作。  m  |* ^+ @2 H
C语言程序调用汇编语言程序完成字符串拷贝。' L: [. n. S7 X5 q( i
C语言源程序:$ H/ z" S9 Y) m6 i1 x
#include <stdio.h>  v% t* G6 y& E. {5 j' |
extern void strcopy(char *d,const char *s)  ;用extern声明一个函数为外部函数
9 h/ ?5 M/ V% V; G& m2 o                                            ;可被其他文件中的函数调用
1 r- N! R0 v% q$ ~% |( ]6 D- \. fint main
( q5 E: o7 }; R{const char *srcstr="First string-source";& G. R5 z3 h2 x( T8 u6 ~
char *dststr="Second string-destination";
' e3 C: R7 a( ]3 fprintf("Before copying:\n");! ^5 O! J4 A& Q% L; S
printf("%s\n%s\n",srcstr,dststr);   ; c6 l$ O! f, n  `1 U- [8 C, `
strcopy(srcstr,dststr);                     ;调用汇编函数strcopy()- Z9 [7 x8 D6 u) K0 E" X
printf("After copying:\n");& M$ [$ G6 Z2 J- l; @; l5 T
printf("%s\n%s\n",srcstr,dststr);
' h4 d1 N) ]  zreturn(0);
- A  h+ K+ Q+ e$ X}+ }7 }7 ]% w. o. a- o; o
汇编语言源程序:7 j0 v% R1 f& H5 Y0 f. e
AREA SCopy,CODE,READONLY. q/ r# c; d; m2 n+ d0 ~6 S
EXPORT strcopy          ;用EXPORT伪操作声明该变量可被其他文件引% D8 b) ^4 w8 ~  P) g
                        ;用,相当于声明了一个全局变量2 B% }3 h+ N5 M9 K; N3 |
Strcopy                 ;R0指向目标字符串,R1指向源字符串2 O5 f3 U1 {: T
LDRB    R2,[R1],#1      ;字节加载,并更新地址
; T4 L* U) r$ n7 I- e5 _STRB    R2,[R0],#1      ;字节保存,并更新地址
3 ]7 K1 p: t4 N" @, HCMP     R2,#0          ;检测R2是否等于0* M$ ~/ c  R; T# \, Z: e7 i
BNE     strcopy         ;若条件不成立,则继续执行
: Y  U( B4 ^; ZMOV    PC,LR            ;从子程序返回2 A" U; R5 R; Y0 j) R( t* Y
END

该用户从未签到

2#
发表于 2016-8-11 14:35 | 只看该作者
支持一下,很不错哦!
: _& u/ [& @# m) a8 t; _" b

该用户从未签到

3#
发表于 2016-8-11 14:45 | 只看该作者
资源多,学习不止步,共同进步) T; C; p' l5 f5 A

该用户从未签到

4#
发表于 2016-8-12 10:56 | 只看该作者
谢谢楼主,一步步来,学习中……
" e" P, j5 l6 R: Q5 ~* x

该用户从未签到

5#
发表于 2016-8-12 11:47 | 只看该作者
楼主辛苦了!
) \$ l- a: H) b! m

该用户从未签到

6#
发表于 2016-8-15 11:45 | 只看该作者
支持一下,很不错哦!
, Q; P, b* [  O

该用户从未签到

7#
发表于 2016-8-16 10:13 | 只看该作者
谢谢O(∩_∩)O哈哈~谢谢O(∩_∩)O哈哈( L7 i7 {5 w* w0 H
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-17 14:07 , Processed in 0.081055 second(s), 23 queries , Gzip On.

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

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

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