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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
为了保证程序调用时参数的正确传递,汇编语言程序的设计要遵守ATPCS。在汇编语言程序中使用EXPORT伪操作来声明,使得本程序可被其他程序调用。同时,在C语言程序调用该汇编语言程序之前,需要在C语言程序使用extern关键词来声明该汇编语言程序。在示例中,汇编语言程序strcopy完成字符串复制功能,C语言程序调用strcopy完成字符串的复制工作。0 O2 K4 ?* s4 ]. k1 q+ {' i
C语言程序调用汇编语言程序完成字符串拷贝。) u1 f) u, Z" B, J4 w( g( _" O
C语言源程序:) E8 X1 Z6 J7 V' d2 t( H" A: v
#include <stdio.h>
3 Z# ~- u, x0 g1 ]- textern void strcopy(char *d,const char *s)  ;用extern声明一个函数为外部函数
* u5 C, V" \/ _2 P! {                                            ;可被其他文件中的函数调用# s; ~/ K7 H/ u
int main% I6 l: q. X* s4 e
{const char *srcstr="First string-source";; q$ ]& k& P% @& k( D/ L4 t
char *dststr="Second string-destination";
9 r* `+ k; }. H% U- Cprintf("Before copying:\n");
* T% ^7 ^5 \, k/ P- I# v' A3 e. B! Dprintf("%s\n%s\n",srcstr,dststr);   & J: _  x5 c! p) a- J) l' v2 C' @# O
strcopy(srcstr,dststr);                     ;调用汇编函数strcopy()
/ K- _* D2 G. j' Y, [7 ?+ pprintf("After copying:\n");8 g/ A0 ~, b1 u# Z% J& n
printf("%s\n%s\n",srcstr,dststr);
7 j( c9 _" E8 d5 sreturn(0);
0 f/ k& j" H* y& [6 R6 p  z$ N1 l}# |* G& _& k/ T( i
汇编语言源程序:
3 b, F- K, k9 t7 w/ T/ P, \AREA SCopy,CODE,READONLY) U) F) v+ i2 Y
EXPORT strcopy          ;用EXPORT伪操作声明该变量可被其他文件引1 \( [6 r$ G7 v; m$ [
                        ;用,相当于声明了一个全局变量
: B- X' [2 J0 A- SStrcopy                 ;R0指向目标字符串,R1指向源字符串6 w# }9 e- m) {1 I$ W* {& q
LDRB    R2,[R1],#1      ;字节加载,并更新地址
# t+ Z% I  `! FSTRB    R2,[R0],#1      ;字节保存,并更新地址- a$ Q; B/ a0 X& W  ?
CMP     R2,#0          ;检测R2是否等于0
6 m7 _% u$ m+ a7 \9 ABNE     strcopy         ;若条件不成立,则继续执行; i' I) ?$ F2 J: @( Y+ m7 I1 _1 J
MOV    PC,LR            ;从子程序返回
) |5 b# @! e, L6 q. SEND

该用户从未签到

2#
 楼主| 发表于 2016-7-13 15:03 | 只看该作者
看贴学心得,回贴是美德
+ T$ s+ D' E1 M- F& U7 ~

该用户从未签到

3#
发表于 2016-7-14 15:00 | 只看该作者
感谢楼主分享!!!$ X0 d8 B/ ?; L- ^& V

该用户从未签到

4#
发表于 2016-7-18 19:05 | 只看该作者
路过捧场,谢谢分享!# K* y& g3 F' @
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-1 07:41 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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