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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
为了保证程序调用时参数的正确传递,汇编语言程序的设计要遵守ATPCS。在汇编语言程序中使用EXPORT伪操作来声明,使得本程序可被其他程序调用。同时,在C语言程序调用该汇编语言程序之前,需要在C语言程序使用extern关键词来声明该汇编语言程序。在示例中,汇编语言程序strcopy完成字符串复制功能,C语言程序调用strcopy完成字符串的复制工作。9 t  ]1 j8 d! v1 B1 Z( V
C语言程序调用汇编语言程序完成字符串拷贝。" R& u: Z4 G4 T0 D
C语言源程序:6 m! B8 m4 s/ f' c) V% a. H! f+ ~: ~
#include <stdio.h>
7 p+ y( [; B) F+ ~/ cextern void strcopy(char *d,const char *s)  ;用extern声明一个函数为外部函数
3 y$ n. A% ^( E& Z; x3 X                                            ;可被其他文件中的函数调用, {& X$ R; n* N9 L! Z  [; Q
int main4 C2 \) f, z$ M3 o( S
{const char *srcstr="First string-source";
9 Q2 k( }! c  K8 `0 rchar *dststr="Second string-destination";
  v& f$ q3 k) y; T" O8 qprintf("Before copying:\n");
, R- J) _. }# H# {% i; K( D+ F. }printf("%s\n%s\n",srcstr,dststr);   # h& o+ s: @* _0 j4 P2 Q+ z
strcopy(srcstr,dststr);                     ;调用汇编函数strcopy()
, ?3 z4 i1 g3 E+ P9 |! R- z0 s0 cprintf("After copying:\n");* G! e  Z, u9 t: ^1 c4 D+ f2 h1 b
printf("%s\n%s\n",srcstr,dststr);
4 N2 W/ Y' B  i) Q  A% lreturn(0);3 |/ I' S2 E8 D$ i+ Q
}
9 d( n- M! \6 N" B0 t汇编语言源程序:
. w, y9 Q0 Q- C$ e' P, w4 ^4 OAREA SCopy,CODE,READONLY
3 D6 ]; `- U6 ^' B. ZEXPORT strcopy          ;用EXPORT伪操作声明该变量可被其他文件引8 Y; ~; r# O4 s# N
                        ;用,相当于声明了一个全局变量0 q! f7 t* k7 m* K; z
Strcopy                 ;R0指向目标字符串,R1指向源字符串/ F! w/ Y+ @0 o  C# f
LDRB    R2,[R1],#1      ;字节加载,并更新地址- s/ Y9 M2 s- O% j/ Q
STRB    R2,[R0],#1      ;字节保存,并更新地址
7 V$ z" E& m; o1 j" M* B- ?CMP     R2,#0          ;检测R2是否等于03 R; |9 W& l8 z, r) v4 L
BNE     strcopy         ;若条件不成立,则继续执行
! ^/ m+ d1 s7 e# U% B) h% TMOV    PC,LR            ;从子程序返回3 D5 v3 v6 U5 c- }0 T" D
END

该用户从未签到

2#
 楼主| 发表于 2016-7-13 15:03 | 只看该作者
看贴学心得,回贴是美德- ?  k0 C) }" ~1 D

该用户从未签到

3#
发表于 2016-7-14 15:00 | 只看该作者
感谢楼主分享!!!
/ U# A8 t2 s6 E: e7 j  n

该用户从未签到

4#
发表于 2016-7-18 19:05 | 只看该作者
路过捧场,谢谢分享!4 G9 s0 B& F9 q; D0 h! N
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-23 17:57 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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