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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
为了保证程序调用时参数的正确传递,汇编语言程序的设计要遵守ATPCS。在汇编语言程序中使用EXPORT伪操作来声明,使得本程序可被其他程序调用。同时,在C语言程序调用该汇编语言程序之前,需要在C语言程序使用extern关键词来声明该汇编语言程序。在示例中,汇编语言程序strcopy完成字符串复制功能,C语言程序调用strcopy完成字符串的复制工作。* B0 b* m; s2 y) Y; J
C语言程序调用汇编语言程序完成字符串拷贝。: L0 i3 f( w- y/ G
C语言源程序:4 A% L6 H8 k4 o+ m
#include <stdio.h>
" d: _. l+ ~, X1 h. k, V+ p& {extern void strcopy(char *d,const char *s)  ;用extern声明一个函数为外部函数
" I/ R$ r% E# Q( M( ]# @; |6 ~                                            ;可被其他文件中的函数调用
' K7 Y& t8 t, a7 T/ f# C- o7 h6 L$ Uint main& e" ]/ K7 ]% S
{const char *srcstr="First string-source";- E. @0 n: N# ^5 k  Z
char *dststr="Second string-destination";
% T. ]8 U3 p  h4 o- qprintf("Before copying:\n");
7 ^, O8 K. _- u+ A- l' Mprintf("%s\n%s\n",srcstr,dststr);   
; L1 G! d; \* b6 Zstrcopy(srcstr,dststr);                     ;调用汇编函数strcopy()
5 |* ~( d6 t  T; vprintf("After copying:\n");
: \' e. B% B8 _8 z" a+ Yprintf("%s\n%s\n",srcstr,dststr);
# I# P+ E- J+ q6 Y% e6 _  u: oreturn(0);
3 o3 @+ Z+ H. u! c8 [9 Z$ _}
2 k- k5 m0 {3 @4 z7 N汇编语言源程序:
2 b- K4 x3 j- w: S# \AREA SCopy,CODE,READONLY
! i0 \( w7 X5 l+ e# MEXPORT strcopy          ;用EXPORT伪操作声明该变量可被其他文件引
) |+ x4 P9 B& C: P; L, b                        ;用,相当于声明了一个全局变量
& |4 Q" v- i5 t7 Q$ z* kStrcopy                 ;R0指向目标字符串,R1指向源字符串
5 n8 K/ p3 \$ ]% E% FLDRB    R2,[R1],#1      ;字节加载,并更新地址/ l8 e" z8 ?# B: E2 Y7 c
STRB    R2,[R0],#1      ;字节保存,并更新地址3 g7 I7 J3 P  k% }
CMP     R2,#0          ;检测R2是否等于0
7 ]  l9 o/ V  w' lBNE     strcopy         ;若条件不成立,则继续执行: `$ o- l0 w) M0 ?0 t0 ^* J7 N+ r
MOV    PC,LR            ;从子程序返回
5 P# P1 J& _  u, e0 vEND

该用户从未签到

2#
发表于 2016-8-11 14:35 | 只看该作者
支持一下,很不错哦!! P. e' y  }1 W" @$ W, X

该用户从未签到

3#
发表于 2016-8-11 14:45 | 只看该作者
资源多,学习不止步,共同进步" S+ B5 `4 @. B

该用户从未签到

4#
发表于 2016-8-12 10:56 | 只看该作者
谢谢楼主,一步步来,学习中……
8 I( ?3 f7 V1 M4 [' m

该用户从未签到

5#
发表于 2016-8-12 11:47 | 只看该作者
楼主辛苦了!- u5 K* j/ K/ {3 S

该用户从未签到

6#
发表于 2016-8-15 11:45 | 只看该作者
支持一下,很不错哦!6 p2 O0 K  I' A

该用户从未签到

7#
发表于 2016-8-16 10:13 | 只看该作者
谢谢O(∩_∩)O哈哈~谢谢O(∩_∩)O哈哈
& }6 Y, r  C: M* ~) w
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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