在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 2313|回复: 0

[资料] 汇编语言程序访问C语言全局变量

[复制链接]
发表于 2016-3-9 16:30:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x

汇编语言程序可通过地址间访问在C语言程序中声明的全局变量。通过使用IMPORT关键词引入全局变量,并利用LDR和STR指令根据全局变量的地址来访问它们。对于不同类型的变量,需要采用不同选项的LDR和STR指令:

unsigned char   LDRB/STRB

unsigned short  LDRH/STRH

unsigned int    LDR/STR

char            LDRSB/STRSB

short           LDRSH//STRSH

对于结构,如果知道各个成员的偏移量,则可通过加载和存储指令进行访问。如果结构所占空间小于8个字,则可用LDM和SRM一次性读/写。

下面是一个在汇编语言程序中访问C语言程序全局变量的例子,它读取全局变量globvar,并将其加2后写回。程序中变量globvar是在C语言程序中声明的全局变量。

示例    C语言程序全局变量在汇编语言程序中的访问。

AREA globals,CODE,READONLY

EXPORT asmsubroutine        ;用EXPORT伪操作声明该变量可被其他文件引

                            ;用,相当于声明了一个全局变量

IMPORT  globvar             ;用IMPORT伪操作声明该变量时在其他文件中定

                            ;义的,在本文件中可能要用到该变量

asmsubroutine

LDR R1,=globvar             ;从文字池读globvar的地址,并将其保存到R1

LDR R0,[R1]                ;再将其值读入到寄存器R0中

ADD R0,R0,#2  

STR R0,[R1]                ;修改后再将寄存器R0的值赋予变量globvar

MOV PC,LR

END

凌阳教育,专注嵌入式人才培养多年,完善的培养方案,强大的师资,合理的课程安排,成功从小白蜕变为嵌入式工程师。想了解凌阳教育,或者获得更多嵌入式学习资料的免费下载,请点击www.sunplusedu.com访问凌阳教育官网


您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

如何优化 SoC 设计

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-19 14:30 , Processed in 0.014563 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表