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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
为了保证程序调用时参数的正确传递,汇编语言程序的设计要遵守ATPCS。在汇编语言程序中使用EXPORT伪操作来声明,使得本程序可被其他程序调用。同时,在C语言程序调用该汇编语言程序之前,需要在C语言程序使用extern关键词来声明该汇编语言程序。在示例中,汇编语言程序strcopy完成字符串复制功能,C语言程序调用strcopy完成字符串的复制工作。
( q" t" ?: V1 Q  eC语言程序调用汇编语言程序完成字符串拷贝。5 Q; }) E+ A" T: V
C语言源程序:
* `( b4 }4 }+ q( F$ P! ^. c) h#include <stdio.h>" X6 K2 T+ M% Z* [8 [4 k) J& ?& ^
extern void strcopy(char *d,const char *s)  ;用extern声明一个函数为外部函数
" A9 P" o. r/ L                                            ;可被其他文件中的函数调用' ]/ _* K: L; G0 y! p! e% B/ o
int main
; T8 h% t/ \2 @1 j{const char *srcstr="First string-source";3 _% [) c" Z& Y# V  Y. h% r
char *dststr="Second string-destination";3 x  l4 O1 b( ]* O1 _
printf("Before copying:\n");
  J+ I* G; p5 l2 e* Z4 t- Y) Dprintf("%s\n%s\n",srcstr,dststr);   
: d* V! [$ g! s2 n( `% S( E) n/ Wstrcopy(srcstr,dststr);                     ;调用汇编函数strcopy(): ]# I" U+ S6 Z6 y2 ^
printf("After copying:\n");
# P+ |' E% W) |3 `7 b( Z% yprintf("%s\n%s\n",srcstr,dststr);
2 g4 L! \# s; v9 \- `return(0);, v1 {! B% W  h! |+ f3 c' _' f
}
* J1 J; V3 H9 n! E& m! ~0 Y汇编语言源程序:3 |1 j( }4 z) m" m% ^5 }
AREA SCopy,CODE,READONLY9 I8 o; B7 F. R1 @' i) j5 j7 B( C
EXPORT strcopy          ;用EXPORT伪操作声明该变量可被其他文件引
9 y7 P8 x+ _1 q% s6 B; M                        ;用,相当于声明了一个全局变量5 {* j1 y% B9 V' Q8 f! T
Strcopy                 ;R0指向目标字符串,R1指向源字符串3 F8 M1 c( ^  Y! ~
LDRB    R2,[R1],#1      ;字节加载,并更新地址, d; e8 q) W2 P
STRB    R2,[R0],#1      ;字节保存,并更新地址
0 J; Y+ G0 p0 wCMP     R2,#0          ;检测R2是否等于0! \6 F+ J) b  w
BNE     strcopy         ;若条件不成立,则继续执行, b8 W4 X6 ^; F/ f; ]# Z
MOV    PC,LR            ;从子程序返回  L; }# Z7 h; H
END

该用户从未签到

2#
发表于 2016-8-11 14:35 | 只看该作者
支持一下,很不错哦!
7 i+ J, I2 ?) m  ^5 c

该用户从未签到

3#
发表于 2016-8-11 14:45 | 只看该作者
资源多,学习不止步,共同进步: j, n# _1 t$ ]4 I$ P$ d0 E

该用户从未签到

4#
发表于 2016-8-12 10:56 | 只看该作者
谢谢楼主,一步步来,学习中……# m7 e) x! m! h2 B% w

该用户从未签到

5#
发表于 2016-8-12 11:47 | 只看该作者
楼主辛苦了!
' t+ A. ]# J6 a. Q

该用户从未签到

6#
发表于 2016-8-15 11:45 | 只看该作者
支持一下,很不错哦!4 v% \4 U- L3 y3 T6 F

该用户从未签到

7#
发表于 2016-8-16 10:13 | 只看该作者
谢谢O(∩_∩)O哈哈~谢谢O(∩_∩)O哈哈) g! Q* ?4 {" K! I
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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