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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
为了保证程序调用时参数的正确传递,汇编语言程序的设计要遵守ATPCS。在汇编语言程序中使用EXPORT伪操作来声明,使得本程序可被其他程序调用。同时,在C语言程序调用该汇编语言程序之前,需要在C语言程序使用extern关键词来声明该汇编语言程序。在示例中,汇编语言程序strcopy完成字符串复制功能,C语言程序调用strcopy完成字符串的复制工作。' }& z! p% ^7 [7 R( G, y- T, U
C语言程序调用汇编语言程序完成字符串拷贝。
% c; V) A# M4 N! I  J: @C语言源程序:
( Q& d0 |& B6 `#include <stdio.h>
9 B, Y) M6 ?4 F2 Q( N, Yextern void strcopy(char *d,const char *s)  ;用extern声明一个函数为外部函数* {' f' V! y1 v& F, S0 b
                                            ;可被其他文件中的函数调用
: L3 O/ o! C. K4 o7 pint main* P+ l2 M, I; N; h, {
{const char *srcstr="First string-source";+ n6 q. @( D+ k* p; g
char *dststr="Second string-destination";
' j& j' ]5 r3 W3 Y/ I$ E6 Vprintf("Before copying:\n");
$ X# |* [" p# a  @$ D, ^printf("%s\n%s\n",srcstr,dststr);   ( G" y' [; S7 P- t
strcopy(srcstr,dststr);                     ;调用汇编函数strcopy()
# M: F) F! s3 j6 K$ F3 w* Tprintf("After copying:\n");. b" G$ ]: T2 Z% U/ T# n! E
printf("%s\n%s\n",srcstr,dststr);
) y9 o& ]5 N% W7 Creturn(0);
) Q) R3 r3 _" E: Y1 A}+ _! I, w  v+ h' W$ l3 @- s0 \4 W
汇编语言源程序:2 t3 G; f; Y' H: P
AREA SCopy,CODE,READONLY
, `& Y3 v/ r$ j- u5 MEXPORT strcopy          ;用EXPORT伪操作声明该变量可被其他文件引
# F% i( }1 D* [4 {# L                        ;用,相当于声明了一个全局变量
9 o! x; x  v: ?. Z" U1 NStrcopy                 ;R0指向目标字符串,R1指向源字符串
: a" r" ]6 g8 ^' \5 z+ A  KLDRB    R2,[R1],#1      ;字节加载,并更新地址) E/ a+ e$ q  Q9 z5 ~
STRB    R2,[R0],#1      ;字节保存,并更新地址
! i! G7 ^. ~+ D( lCMP     R2,#0          ;检测R2是否等于0* l+ j4 l) s8 L6 Y: s
BNE     strcopy         ;若条件不成立,则继续执行; B# V- {) j# R" c5 b
MOV    PC,LR            ;从子程序返回
. A$ n9 [3 I& U* J' A, REND

该用户从未签到

2#
发表于 2016-8-11 14:35 | 只看该作者
支持一下,很不错哦!
6 F' K: V; ?) v* O% H, u5 V

该用户从未签到

3#
发表于 2016-8-11 14:45 | 只看该作者
资源多,学习不止步,共同进步
, Z6 `6 e7 n' ^# u) h8 ~; x

该用户从未签到

4#
发表于 2016-8-12 10:56 | 只看该作者
谢谢楼主,一步步来,学习中……1 |5 d, j- T; `+ k3 A' N

该用户从未签到

5#
发表于 2016-8-12 11:47 | 只看该作者
楼主辛苦了!
+ p0 I- a3 \* @

该用户从未签到

6#
发表于 2016-8-15 11:45 | 只看该作者
支持一下,很不错哦!  c' t/ ]. G+ t* Z- i9 \! j

该用户从未签到

7#
发表于 2016-8-16 10:13 | 只看该作者
谢谢O(∩_∩)O哈哈~谢谢O(∩_∩)O哈哈
" b) L) A$ @5 r  ?% t9 T
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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