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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
为了保证程序调用时参数的正确传递,汇编语言程序的设计要遵守ATPCS。在汇编语言程序中使用EXPORT伪操作来声明,使得本程序可被其他程序调用。同时,在C语言程序调用该汇编语言程序之前,需要在C语言程序使用extern关键词来声明该汇编语言程序。在示例中,汇编语言程序strcopy完成字符串复制功能,C语言程序调用strcopy完成字符串的复制工作。* O, S8 Y- q' g! F5 M
C语言程序调用汇编语言程序完成字符串拷贝。" x  t% H5 ?5 t% k5 I& Y) x) d, r
C语言源程序:
5 A4 q  c' m3 T9 k( G9 y#include <stdio.h>6 Q2 A" n0 H& @) c) M
extern void strcopy(char *d,const char *s)  ;用extern声明一个函数为外部函数: I; b" o5 [) [5 ~: z
                                            ;可被其他文件中的函数调用/ K, l6 ~* ~& _! N4 b" Y& I
int main! T. P: a2 ]5 Y- R% w
{const char *srcstr="First string-source";- n6 c& F, H3 C. z- f
char *dststr="Second string-destination";
, e- K. l; G. o$ j' hprintf("Before copying:\n");
/ s# ?. H' \- Z, ^; |" Jprintf("%s\n%s\n",srcstr,dststr);   
5 L/ ?- B) y2 Q3 @strcopy(srcstr,dststr);                     ;调用汇编函数strcopy()/ t2 E' _6 C5 S& M& }: d$ L3 r
printf("After copying:\n");7 U% ~, o& X, ^! H
printf("%s\n%s\n",srcstr,dststr);
/ t' Q7 L/ }. F' S6 Nreturn(0);
- c) P. h6 u9 \- m! P" E$ w) b}
/ K8 K: X8 x! |" Z9 E) D7 k. z7 s汇编语言源程序:4 M% [5 l  m3 b" \. ?. G& b9 w
AREA SCopy,CODE,READONLY
, c2 {* n: l, L" F& U% yEXPORT strcopy          ;用EXPORT伪操作声明该变量可被其他文件引
4 L2 w  v6 I/ \0 t  I) P% ]                        ;用,相当于声明了一个全局变量
, }% `! t/ U6 g8 u1 eStrcopy                 ;R0指向目标字符串,R1指向源字符串
8 m% e3 `! E# ~7 k' Q5 v/ H( zLDRB    R2,[R1],#1      ;字节加载,并更新地址. G7 ~1 `. i: ^; s( O
STRB    R2,[R0],#1      ;字节保存,并更新地址
$ N4 [% L; Z1 K; OCMP     R2,#0          ;检测R2是否等于0
0 w' u$ }1 A4 @5 F, r. \BNE     strcopy         ;若条件不成立,则继续执行
/ n/ E: ~. s8 o; c9 u& z6 iMOV    PC,LR            ;从子程序返回
1 h# v% r1 y& ^) E: z; eEND

该用户从未签到

2#
发表于 2016-8-11 14:35 | 只看该作者
支持一下,很不错哦!
9 |; R6 V' B; S5 k

该用户从未签到

3#
发表于 2016-8-11 14:45 | 只看该作者
资源多,学习不止步,共同进步
; E- I9 P0 y" i# ]: o' t/ z5 W/ T

该用户从未签到

4#
发表于 2016-8-12 10:56 | 只看该作者
谢谢楼主,一步步来,学习中……2 b0 b. J4 x4 a2 G+ p" Y; B

该用户从未签到

5#
发表于 2016-8-12 11:47 | 只看该作者
楼主辛苦了!* E! @- j9 A+ |5 k4 _/ c

该用户从未签到

6#
发表于 2016-8-15 11:45 | 只看该作者
支持一下,很不错哦!" M) f" ^( H9 k; N0 p; T

该用户从未签到

7#
发表于 2016-8-16 10:13 | 只看该作者
谢谢O(∩_∩)O哈哈~谢谢O(∩_∩)O哈哈" s9 u* @. C5 l8 }; j" m4 E
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-9-6 20:46 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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