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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
为了保证程序调用时参数的正确传递,汇编语言程序的设计要遵守ATPCS。在汇编语言程序中使用EXPORT伪操作来声明,使得本程序可被其他程序调用。同时,在C语言程序调用该汇编语言程序之前,需要在C语言程序使用extern关键词来声明该汇编语言程序。在示例中,汇编语言程序strcopy完成字符串复制功能,C语言程序调用strcopy完成字符串的复制工作。
& k( [2 ~4 @4 F: NC语言程序调用汇编语言程序完成字符串拷贝。
( \: O1 P8 W; A6 x9 }) O5 R; wC语言源程序:0 o) I; t0 v" A/ E  i  i$ j
#include <stdio.h>% O* |1 [. d. e+ }
extern void strcopy(char *d,const char *s)  ;用extern声明一个函数为外部函数: q7 ]1 O6 |# R6 V9 [% p
                                            ;可被其他文件中的函数调用
. t0 j5 Q1 ~+ K/ f, Y) r4 \int main
# l" I+ F) u) b. [+ P3 e/ q{const char *srcstr="First string-source";
; A$ J3 P; @+ X# \char *dststr="Second string-destination";
4 v& S. _/ ^1 a; Xprintf("Before copying:\n");
+ _8 L8 B# z( Q. b# p6 h' r1 mprintf("%s\n%s\n",srcstr,dststr);   
4 h; L* A! D8 G. t5 c# ystrcopy(srcstr,dststr);                     ;调用汇编函数strcopy()
- c% Q  G) b9 L3 o" I) K9 Iprintf("After copying:\n");
, N* @) L+ ^) Sprintf("%s\n%s\n",srcstr,dststr);- O9 A( o* M; B9 q+ [
return(0);* u/ d$ N4 K! u: p' g% C# p5 X" Z
}5 e& ?# ]2 x5 u4 V0 \/ A0 u
汇编语言源程序:; N: E% P2 Q1 r$ o" t
AREA SCopy,CODE,READONLY. c/ B3 O1 x* k7 b4 X/ P4 R
EXPORT strcopy          ;用EXPORT伪操作声明该变量可被其他文件引
) T2 q# ]) a# a% p                        ;用,相当于声明了一个全局变量4 v, B, D+ I- b) Q0 M# v+ |
Strcopy                 ;R0指向目标字符串,R1指向源字符串$ q2 q9 |7 X' ~+ J8 I
LDRB    R2,[R1],#1      ;字节加载,并更新地址
) \& p; J- P  \3 M2 @5 ISTRB    R2,[R0],#1      ;字节保存,并更新地址. H/ D1 P2 A8 G/ o
CMP     R2,#0          ;检测R2是否等于0& {8 k. U/ j8 W( I4 N
BNE     strcopy         ;若条件不成立,则继续执行' |0 w( U3 Z0 o. g4 w9 O! U
MOV    PC,LR            ;从子程序返回
2 c) K$ B, b# @0 v, f6 ^END

该用户从未签到

2#
 楼主| 发表于 2016-7-13 15:03 | 只看该作者
看贴学心得,回贴是美德2 W1 X4 h( W: P* W, v. B3 X

该用户从未签到

3#
发表于 2016-7-14 15:00 | 只看该作者
感谢楼主分享!!!. |% l) C/ p2 U# W. d

该用户从未签到

4#
发表于 2016-7-18 19:05 | 只看该作者
路过捧场,谢谢分享!
1 z, S* A3 a+ C- X- C, |
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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