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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
为了保证程序调用时参数的正确传递,汇编语言程序的设计要遵守ATPCS。在汇编语言程序中使用EXPORT伪操作来声明,使得本程序可被其他程序调用。同时,在C语言程序调用该汇编语言程序之前,需要在C语言程序使用extern关键词来声明该汇编语言程序。在示例中,汇编语言程序strcopy完成字符串复制功能,C语言程序调用strcopy完成字符串的复制工作。( j2 |3 s+ g3 G
C语言程序调用汇编语言程序完成字符串拷贝。( Z% H1 s9 K1 f
C语言源程序:& \. r: w$ C; n2 _* ]  q+ \7 B0 N
#include <stdio.h>$ z* r, I$ _, C' p* d
extern void strcopy(char *d,const char *s)  ;用extern声明一个函数为外部函数
! P8 c, }7 `9 U$ L, Y3 S                                            ;可被其他文件中的函数调用
2 b) v8 `0 q* s4 ~int main
6 r, r! F9 p( ]6 t: f& j, V{const char *srcstr="First string-source";
; k+ v  O7 e# @char *dststr="Second string-destination";% ~: I; g9 ?& T1 N5 g  @1 Y0 {% r
printf("Before copying:\n");0 @* m. V# q4 h6 |5 x7 P% j6 g8 A
printf("%s\n%s\n",srcstr,dststr);   
9 T& ~! J6 G$ g6 A! Istrcopy(srcstr,dststr);                     ;调用汇编函数strcopy(): a3 \  M6 `& L# D. I
printf("After copying:\n");/ q0 t1 Q9 D6 L! c7 M- Q
printf("%s\n%s\n",srcstr,dststr);1 f; ~1 D* T  ~8 [2 Q: b, |
return(0);1 @9 H  ^8 K+ |- m
}  z9 Q# M3 T# G
汇编语言源程序:
: t( A$ p5 x9 k% l# V1 o: o: KAREA SCopy,CODE,READONLY8 K5 g2 _' t! ~: y9 O5 u
EXPORT strcopy          ;用EXPORT伪操作声明该变量可被其他文件引7 v5 n5 b/ P; k+ {! g2 b* e
                        ;用,相当于声明了一个全局变量
3 H8 s/ o% t+ T; K. {9 KStrcopy                 ;R0指向目标字符串,R1指向源字符串: b  i9 K' U( R5 \
LDRB    R2,[R1],#1      ;字节加载,并更新地址
: ^, ~* L7 S' b3 |+ qSTRB    R2,[R0],#1      ;字节保存,并更新地址
% t6 n- ^. h% n8 M0 lCMP     R2,#0          ;检测R2是否等于0! R! H( z* a0 C, B% _. _  Q( i
BNE     strcopy         ;若条件不成立,则继续执行
8 [) J9 ?* i+ ^6 g; r9 i) ~3 jMOV    PC,LR            ;从子程序返回' ?4 ]6 P* U  L5 n9 G
END

该用户从未签到

2#
 楼主| 发表于 2016-7-13 15:03 | 只看该作者
看贴学心得,回贴是美德* E: E8 p8 z: ~6 Y% x

该用户从未签到

3#
发表于 2016-7-14 15:00 | 只看该作者
感谢楼主分享!!!
7 Z/ v* W$ B! G

该用户从未签到

4#
发表于 2016-7-18 19:05 | 只看该作者
路过捧场,谢谢分享!- g5 z& {  X  n) U) d- ]! I0 z
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-12 03:40 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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