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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
为了保证程序调用时参数的正确传递,汇编语言程序的设计要遵守ATPCS。在汇编语言程序中使用EXPORT伪操作来声明,使得本程序可被其他程序调用。同时,在C语言程序调用该汇编语言程序之前,需要在C语言程序使用extern关键词来声明该汇编语言程序。在示例中,汇编语言程序strcopy完成字符串复制功能,C语言程序调用strcopy完成字符串的复制工作。0 ~8 v3 V: L; S+ M3 {/ d! R
C语言程序调用汇编语言程序完成字符串拷贝。% U% s0 [+ E, H0 t7 F% U& E
C语言源程序:/ I' s/ `: I& ^" A9 X
#include <stdio.h>
+ v8 h9 q7 Q1 N0 B# I3 [extern void strcopy(char *d,const char *s)  ;用extern声明一个函数为外部函数
- E' C8 R- _& r+ \* X                                            ;可被其他文件中的函数调用: ?- t; F' ]0 Z! u9 e
int main, j% y1 i4 V5 S* d2 t! F1 T
{const char *srcstr="First string-source";
6 J5 M4 `' B3 P- Echar *dststr="Second string-destination";$ H# N% }8 n% T7 r5 ~/ v3 H
printf("Before copying:\n");* c5 L- z' N/ R- E* [1 f+ E
printf("%s\n%s\n",srcstr,dststr);   
! C! s' g, X3 V3 V- k3 Pstrcopy(srcstr,dststr);                     ;调用汇编函数strcopy()
! s2 A- `9 a7 A% W7 X. W+ |3 R6 T# O+ Aprintf("After copying:\n");; A, D: g+ v# Q! X3 x. e
printf("%s\n%s\n",srcstr,dststr);2 W; B( D. l1 c" P. s
return(0);
( T* O7 U- h% v3 j}. X. F) H# x" g; F. \6 B
汇编语言源程序:
* x$ @- Z( [$ d, {AREA SCopy,CODE,READONLY, a- W7 _* i. a3 w  b  {9 e7 ~0 w
EXPORT strcopy          ;用EXPORT伪操作声明该变量可被其他文件引
. A, W9 E5 M6 c8 ^* j3 X0 O9 l                        ;用,相当于声明了一个全局变量
% z  w. j6 _) Z+ {3 q& H; IStrcopy                 ;R0指向目标字符串,R1指向源字符串8 A: I) g: k" N  C
LDRB    R2,[R1],#1      ;字节加载,并更新地址
# l1 Z2 y4 w1 N! {" VSTRB    R2,[R0],#1      ;字节保存,并更新地址
1 r  D2 U' p$ M% N/ t3 }" hCMP     R2,#0          ;检测R2是否等于0
: X5 r, R( o: f  M2 CBNE     strcopy         ;若条件不成立,则继续执行5 K8 q* d9 n5 j5 u; B$ G; H# q
MOV    PC,LR            ;从子程序返回
! y/ T. `6 p% ZEND

该用户从未签到

2#
 楼主| 发表于 2016-7-13 15:03 | 只看该作者
看贴学心得,回贴是美德2 E4 L$ {- H6 m, w2 a6 M) s! v

该用户从未签到

3#
发表于 2016-7-14 15:00 | 只看该作者
感谢楼主分享!!!
* ?( _, H: ^: ^7 F$ n0 O$ V

该用户从未签到

4#
发表于 2016-7-18 19:05 | 只看该作者
路过捧场,谢谢分享!
9 Y# I. y0 m; r4 y+ L
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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