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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
为了保证程序调用时参数的正确传递,汇编语言程序的设计要遵守ATPCS。在汇编语言程序中使用EXPORT伪操作来声明,使得本程序可被其他程序调用。同时,在C语言程序调用该汇编语言程序之前,需要在C语言程序使用extern关键词来声明该汇编语言程序。在示例中,汇编语言程序strcopy完成字符串复制功能,C语言程序调用strcopy完成字符串的复制工作。( _& _  l1 {2 K" P4 g
C语言程序调用汇编语言程序完成字符串拷贝。
( S; K( I7 `+ CC语言源程序:
8 t( p: O3 O* T#include <stdio.h>& l! }  s8 @( Y- I
extern void strcopy(char *d,const char *s)  ;用extern声明一个函数为外部函数8 O5 Q* Y1 v$ d: y, W1 @/ ]
                                            ;可被其他文件中的函数调用
) X% D' \% z; S  Tint main. F3 e* r; I2 m
{const char *srcstr="First string-source";: S# [! t) q, z: {8 ?  n1 ^  w
char *dststr="Second string-destination";
. K" c9 [) K' Y0 }) Eprintf("Before copying:\n");+ t- Y0 ^4 a4 _  v5 b
printf("%s\n%s\n",srcstr,dststr);   
$ }) @- s8 ~7 V, e# ~4 H  |* nstrcopy(srcstr,dststr);                     ;调用汇编函数strcopy()% k, v" G" r0 j3 S% Y
printf("After copying:\n");
( [1 ?( ^( F( P! z/ Cprintf("%s\n%s\n",srcstr,dststr);$ k0 N9 z" N. I9 l% R, Q, _7 B
return(0);
+ _. v# V& m6 w6 O6 [% @}
4 t' [0 o1 q- w7 ~8 M) h汇编语言源程序:5 a* u, m$ [; B5 \: W1 E) u
AREA SCopy,CODE,READONLY
$ \/ X1 x" ^% C' F* P& ]EXPORT strcopy          ;用EXPORT伪操作声明该变量可被其他文件引
/ @% C! J( W- O& X6 O6 p                        ;用,相当于声明了一个全局变量
& s# O' R. w" U+ _0 xStrcopy                 ;R0指向目标字符串,R1指向源字符串; H$ V$ A! z5 @/ q
LDRB    R2,[R1],#1      ;字节加载,并更新地址
  S% n; p$ Q! E+ tSTRB    R2,[R0],#1      ;字节保存,并更新地址9 M) `+ T: R, g7 i7 v2 e. \  s& s
CMP     R2,#0          ;检测R2是否等于0
1 W& g3 n6 B& ?2 lBNE     strcopy         ;若条件不成立,则继续执行
' O' U+ j+ c& V# H0 U9 Y" k+ ?MOV    PC,LR            ;从子程序返回+ _; \! {1 F% ]4 O
END

该用户从未签到

2#
发表于 2016-8-11 14:35 | 只看该作者
支持一下,很不错哦!
1 f% A! s( m  r8 q3 G5 N% G

该用户从未签到

3#
发表于 2016-8-11 14:45 | 只看该作者
资源多,学习不止步,共同进步' @! ?8 a% K# K" m9 J' K

该用户从未签到

4#
发表于 2016-8-12 10:56 | 只看该作者
谢谢楼主,一步步来,学习中……7 l) [5 z; r1 H* Q: C  o0 U) b

该用户从未签到

5#
发表于 2016-8-12 11:47 | 只看该作者
楼主辛苦了!
7 e! C+ V& [2 r1 F+ t) t

该用户从未签到

6#
发表于 2016-8-15 11:45 | 只看该作者
支持一下,很不错哦!
6 D% R% A  S, Q: F

该用户从未签到

7#
发表于 2016-8-16 10:13 | 只看该作者
谢谢O(∩_∩)O哈哈~谢谢O(∩_∩)O哈哈
8 V- x, n7 H; Z& |; @( v: [
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-2 04:18 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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