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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
为了保证程序调用时参数的正确传递,汇编语言程序的设计要遵守ATPCS。在汇编语言程序中使用EXPORT伪操作来声明,使得本程序可被其他程序调用。同时,在C语言程序调用该汇编语言程序之前,需要在C语言程序使用extern关键词来声明该汇编语言程序。在示例中,汇编语言程序strcopy完成字符串复制功能,C语言程序调用strcopy完成字符串的复制工作。9 v& Q% I5 i! J7 |$ ^& k
C语言程序调用汇编语言程序完成字符串拷贝。! S8 E7 Y+ Q- G  s
C语言源程序:: _. u1 q$ i7 b$ S4 l' \, q
#include <stdio.h>  w- F/ m) ]1 Y' U/ t
extern void strcopy(char *d,const char *s)  ;用extern声明一个函数为外部函数) G5 N& u: |1 J
                                            ;可被其他文件中的函数调用5 A& F' R7 f+ u
int main
% H! d- Y% U1 r  A{const char *srcstr="First string-source";8 L' i. }0 T: S- v! Q
char *dststr="Second string-destination";
: Q7 c* k2 X. R/ V. P/ h. Wprintf("Before copying:\n");' k* n) r7 H, z8 d
printf("%s\n%s\n",srcstr,dststr);   2 G& @. j5 T# ]9 i. e
strcopy(srcstr,dststr);                     ;调用汇编函数strcopy()' M! ~2 e% ]7 e. z/ c9 Y; J
printf("After copying:\n");
+ [% V  J9 Z& [* c* c) @printf("%s\n%s\n",srcstr,dststr);% ], M0 n# s6 k2 R( ?0 {: Q0 x' C
return(0);& ^9 N" q4 g  X6 Y3 J& K+ S
}' U8 h7 E; Y' B
汇编语言源程序:
, t. R! `0 Y& d* c: JAREA SCopy,CODE,READONLY
& Q2 H- Q  R! h3 f0 ?6 jEXPORT strcopy          ;用EXPORT伪操作声明该变量可被其他文件引
' w1 ~. `7 j: F0 e                        ;用,相当于声明了一个全局变量
; b& y) ?0 A& H& ?Strcopy                 ;R0指向目标字符串,R1指向源字符串
( B  Q/ L/ v% A7 B% gLDRB    R2,[R1],#1      ;字节加载,并更新地址! W9 S/ f! c+ h
STRB    R2,[R0],#1      ;字节保存,并更新地址, B! {/ F- _6 X$ g; ~+ a
CMP     R2,#0          ;检测R2是否等于00 _2 w2 j& p5 d% a& g
BNE     strcopy         ;若条件不成立,则继续执行
& B# C: {* m" B" a- gMOV    PC,LR            ;从子程序返回
- J: N" t- f! K9 ]END

该用户从未签到

2#
 楼主| 发表于 2016-7-13 15:03 | 只看该作者
看贴学心得,回贴是美德
! R& }, |8 L2 N+ z% k

该用户从未签到

3#
发表于 2016-7-14 15:00 | 只看该作者
感谢楼主分享!!!, j/ m. q3 N  H& Y: j$ A

该用户从未签到

4#
发表于 2016-7-18 19:05 | 只看该作者
路过捧场,谢谢分享!3 X& {9 m, u" Y0 J/ w' k( T
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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