找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 66|回复: 4
打印 上一主题 下一主题

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

[复制链接]

193

主题

569

帖子

1397

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

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

EDA365欢迎您!

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

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
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!

245

主题

1028

帖子

1921

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1921
2#
发表于 2016-7-13 17:11 | 只看该作者
支持一下,很不错哦!

点评

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

162

主题

614

帖子

1255

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1255
3#
发表于 2016-7-14 14:20 | 只看该作者
路过捧场,谢谢分享!

211

主题

652

帖子

1507

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

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

0

主题

25

帖子

23

积分

二级会员(20)

Rank: 2Rank: 2

积分
23
5#
发表于 2016-7-15 15:01 | 只看该作者
Haiting32451 发表于 2016-7-13 17:11
支持一下,很不错哦!

谢谢分享,不错哦
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2024-11-26 05:32 , Processed in 0.057646 second(s), 32 queries , Gzip On.

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

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

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