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

汇编语言程序访问C语言全局变量

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
汇编语言程序可通过地址间访问在C语言程序中声明的全局变量。通过使用IMPORT关键词引入全局变量,并利用LDR和STR指令根据全局变量的地址来访问它们。对于不同类型的变量,需要采用不同选项的LDR和STR指令:
) Q" y* }: {) c2 T( i6 Aunsigned char   LDRB/STRB
9 @7 T4 F7 z5 c2 l, {unsigned short  LDRH/STRH0 A7 g" X. K) O! [
unsigned int    LDR/STR" b) Z" `* w7 O0 o) K, v
char            LDRSB/STRSB
2 a% t: s& m1 o6 `2 d# Jshort           LDRSH//STRSH8 i. E" S3 H2 l: o( _/ T% Z
对于结构,如果知道各个成员的偏移量,则可通过加载和存储指令进行访问。如果结构所占空间小于8个字,则可用LDM和SRM一次性读/写。
0 H3 U; c7 X9 F1 h, r' |7 ]下面是一个在汇编语言程序中访问C语言程序全局变量的例子,它读取全局变量globvar,并将其加2后写回。程序中变量globvar是在C语言程序中声明的全局变量。; }* j& v, J$ Y4 a* w
示例    C语言程序全局变量在汇编语言程序中的访问。% x3 |* D/ j4 {, C) v
AREA globals,CODE,READONLY
6 w$ p; m! }' ?: }) VEXPORT asmsubroutine        ;用EXPORT伪操作声明该变量可被其他文件引4 c( O2 \1 y: e  E- Y- r, q
                            ;用,相当于声明了一个全局变量' N1 b+ }! L5 ]  F) a  U* h# C
IMPORT  globvar             ;用IMPORT伪操作声明该变量时在其他文件中定" |% d8 C% T9 Y) Y0 U# t' b4 A
                            ;义的,在本文件中可能要用到该变量- v( M1 j8 b  j# B5 M) b" I3 a
asmsubroutine5 l/ o9 k; i6 j2 ]. g- g9 j, R4 ?
LDR R1,=globvar             ;从文字池读globvar的地址,并将其保存到R1$ c5 o. J7 L- i6 u: ~
LDR R0,[R1]                ;再将其值读入到寄存器R0中
$ ^- u9 [- j- q  b1 V1 u! W! XADD R0,R0,#2  
0 ]4 R- F+ @& F, d  OSTR R0,[R1]                ;修改后再将寄存器R0的值赋予变量globvar
/ U  ~7 s. D. {- W$ \4 D5 }MOV PC,LR0 w( O2 D  [. B# o1 W
END

该用户从未签到

2#
发表于 2016-7-13 17:11 | 只看该作者
支持一下,很不错哦!) ^+ P+ H7 x8 |; \  B

点评

谢谢分享,不错哦  详情 回复 发表于 2016-7-15 15:01

该用户从未签到

3#
发表于 2016-7-14 14:20 | 只看该作者
路过捧场,谢谢分享!! T3 b) f2 d3 z4 |

该用户从未签到

4#
发表于 2016-7-15 14:31 | 只看该作者
路过捧场,谢谢分享!

该用户从未签到

5#
发表于 2016-7-15 15:01 | 只看该作者
Haiting32451 发表于 2016-7-13 17:11. J( D. p2 C  W" k# S% T6 K
支持一下,很不错哦!

) z6 o5 g  n! h- g. u: L+ y% T8 L3 b4 u" F: L谢谢分享,不错哦
% A1 i! R8 u7 C/ ^. a! e
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-1 08:04 , Processed in 0.125000 second(s), 28 queries , Gzip On.

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

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

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