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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
为了保证程序调用时参数的正确传递,汇编语言程序的设计要遵守ATPCS。在汇编语言程序中使用EXPORT伪操作来声明,使得本程序可被其他程序调用。同时,在C语言程序调用该汇编语言程序之前,需要在C语言程序使用extern关键词来声明该汇编语言程序。在示例中,汇编语言程序strcopy完成字符串复制功能,C语言程序调用strcopy完成字符串的复制工作。
" x# E# H, {! m) ZC语言程序调用汇编语言程序完成字符串拷贝。+ s: B+ S/ i; x7 t7 J
C语言源程序:
3 I8 h: T2 S* l#include <stdio.h>
" [- u( V+ l8 _' E" Qextern void strcopy(char *d,const char *s)  ;用extern声明一个函数为外部函数% {: B* J2 U9 Z8 q
                                            ;可被其他文件中的函数调用" z5 n% e2 H4 ]9 z1 g
int main3 A5 t- d+ ?. J  B
{const char *srcstr="First string-source";
# s9 a3 n8 T" g* ?char *dststr="Second string-destination";
6 s- m- L* E4 m3 Z) m' @# uprintf("Before copying:\n");
+ m) i  W5 F) }& D" vprintf("%s\n%s\n",srcstr,dststr);   " ~3 ^0 z' t8 K+ `8 g
strcopy(srcstr,dststr);                     ;调用汇编函数strcopy()
6 k( P: d$ W9 q* Mprintf("After copying:\n");# _+ n- T$ [* ]' a3 D7 p- }6 b
printf("%s\n%s\n",srcstr,dststr);7 I  n. F  K1 R% |6 @) G
return(0);% [- c; J& O$ B7 h1 L: z
}
2 Z# c1 ?9 _8 Y# J: P  B$ v汇编语言源程序:4 W* `# m6 o% H! q! o0 Q* A
AREA SCopy,CODE,READONLY
$ O/ X6 f; _" q2 I, R6 e. ~EXPORT strcopy          ;用EXPORT伪操作声明该变量可被其他文件引% k- v) k0 G  d
                        ;用,相当于声明了一个全局变量
8 ?- v# _" q  i5 u, t7 [* wStrcopy                 ;R0指向目标字符串,R1指向源字符串! q+ [! m. O% n" G: |/ x$ W& W
LDRB    R2,[R1],#1      ;字节加载,并更新地址
3 }5 Z8 @' K5 p2 l4 ^STRB    R2,[R0],#1      ;字节保存,并更新地址5 X0 D9 L& ^, }( D7 y
CMP     R2,#0          ;检测R2是否等于08 F7 m2 J# U- d- z9 T, H
BNE     strcopy         ;若条件不成立,则继续执行! l; W2 |  {' c7 t: R& f+ w) G$ Q
MOV    PC,LR            ;从子程序返回) q" V6 f& W* V. s& A
END

该用户从未签到

2#
 楼主| 发表于 2016-7-13 15:03 | 只看该作者
看贴学心得,回贴是美德! h; h  q) ~: e1 J5 ~

该用户从未签到

3#
发表于 2016-7-14 15:00 | 只看该作者
感谢楼主分享!!!( |9 H/ k2 H; R

该用户从未签到

4#
发表于 2016-7-18 19:05 | 只看该作者
路过捧场,谢谢分享!7 o) t  }6 j" o$ d
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-23 23:13 , Processed in 0.156250 second(s), 23 queries , Gzip On.

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

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

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