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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
为了保证程序调用时参数的正确传递,汇编语言程序的设计要遵守ATPCS。在汇编语言程序中使用EXPORT伪操作来声明,使得本程序可被其他程序调用。同时,在C语言程序调用该汇编语言程序之前,需要在C语言程序使用extern关键词来声明该汇编语言程序。在示例中,汇编语言程序strcopy完成字符串复制功能,C语言程序调用strcopy完成字符串的复制工作。
8 m& o7 r) [" `$ `. N- t+ pC语言程序调用汇编语言程序完成字符串拷贝。
3 g& W/ v/ Z* {0 i1 BC语言源程序:
. v, ?3 z0 e# E$ Q) h- V2 n#include <stdio.h>
: c8 ]$ n8 f. M* }extern void strcopy(char *d,const char *s)  ;用extern声明一个函数为外部函数
) D( Q# B. q4 d2 n/ E. a* y- r, o' Y. L                                            ;可被其他文件中的函数调用
% Q9 M4 ]  [3 x7 j. Yint main6 N- l. r6 i. n. n8 K! k( i" T
{const char *srcstr="First string-source";
4 K. ?- Y! u& X4 j& n! zchar *dststr="Second string-destination";
0 d8 B  D; V0 ?# v# uprintf("Before copying:\n");5 o) i7 F; ^1 g# d" P( ?
printf("%s\n%s\n",srcstr,dststr);   
3 e* s" l- @+ n2 a' X& U1 ]strcopy(srcstr,dststr);                     ;调用汇编函数strcopy()
6 @. B4 U  l/ C  Gprintf("After copying:\n");
$ X9 Z0 [# c) O* ^/ a) w2 }printf("%s\n%s\n",srcstr,dststr);
* y7 ?! o- d9 w% f/ S# r) l7 G7 Q4 Ureturn(0);
- D2 D- b9 t9 l4 t+ P( ~% `% P}
9 L+ ~- M! k+ |/ K汇编语言源程序:
$ k0 `; r" l/ R7 @# IAREA SCopy,CODE,READONLY/ U2 q; f2 i3 k! @
EXPORT strcopy          ;用EXPORT伪操作声明该变量可被其他文件引# c/ F" t0 G4 {0 t/ P
                        ;用,相当于声明了一个全局变量
  p% t- K: `( q% BStrcopy                 ;R0指向目标字符串,R1指向源字符串  T% b& V. X4 o$ q7 r# A- b$ F2 t
LDRB    R2,[R1],#1      ;字节加载,并更新地址
; {2 j" R' N* [& e: M: Q/ v2 T6 NSTRB    R2,[R0],#1      ;字节保存,并更新地址
8 K# S( H6 d2 q$ f' ^& J& UCMP     R2,#0          ;检测R2是否等于06 m0 p. @; }( [+ N9 d8 Y
BNE     strcopy         ;若条件不成立,则继续执行
& {/ X% u. ~6 N; Z# |' QMOV    PC,LR            ;从子程序返回
; G0 `4 s8 r# m3 c! cEND

该用户从未签到

2#
 楼主| 发表于 2016-7-13 15:03 | 只看该作者
看贴学心得,回贴是美德
% u7 {" r' y! p* d  }) f1 G

该用户从未签到

3#
发表于 2016-7-14 15:00 | 只看该作者
感谢楼主分享!!!
7 I# L# s; a' W0 M

该用户从未签到

4#
发表于 2016-7-18 19:05 | 只看该作者
路过捧场,谢谢分享!* Z+ P: k2 W; e/ b
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-9-6 22:57 , Processed in 0.093750 second(s), 23 queries , Gzip On.

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

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

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