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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
汇编语言程序可通过地址间访问在C语言程序中声明的全局变量。通过使用IMPORT关键词引入全局变量,并利用LDR和STR指令根据全局变量的地址来访问它们。对于不同类型的变量,需要采用不同选项的LDR和STR指令:
- e- S2 V5 ]/ S0 r4 ^8 Gunsigned char   LDRB/STRB
, Z0 \3 q# F( i: }5 @4 }2 O" Z# ]5 H; Hunsigned short  LDRH/STRH
( e- g9 r8 k& y3 s! a' Y4 D# C# Funsigned int    LDR/STR
( _; K3 v+ e, C# g. N: qchar            LDRSB/STRSB5 [0 K% m0 M# t: I
short           LDRSH//STRSH
+ F. w3 P/ S9 N* C: P$ ?  T5 R对于结构,如果知道各个成员的偏移量,则可通过加载和存储指令进行访问。如果结构所占空间小于8个字,则可用LDM和SRM一次性读/写。
3 e; D/ |# X/ U8 V下面是一个在汇编语言程序中访问C语言程序全局变量的例子,它读取全局变量globvar,并将其加2后写回。程序中变量globvar是在C语言程序中声明的全局变量。5 \7 V: _$ w2 ~! @
示例    C语言程序全局变量在汇编语言程序中的访问。
5 c4 K9 Y3 P7 G/ n. b: sAREA globals,CODE,READONLY, v% ]* ], e7 O/ w/ ^+ i$ T( K3 Y
EXPORT asmsubroutine        ;用EXPORT伪操作声明该变量可被其他文件引# T) F- w) M0 e
                            ;用,相当于声明了一个全局变量% y8 ^" g6 C$ Q3 M7 ]& _
IMPORT  globvar             ;用IMPORT伪操作声明该变量时在其他文件中定
6 f7 \3 L" \- k# I6 q* F                            ;义的,在本文件中可能要用到该变量. z: z* `0 V9 a0 h% U
asmsubroutine0 W' M  y$ g- n! }
LDR R1,=globvar             ;从文字池读globvar的地址,并将其保存到R1
  D) u7 V0 L4 f0 gLDR R0,[R1]                ;再将其值读入到寄存器R0中
) N' h* y1 N! }  W! H. |ADD R0,R0,#2  
1 ^4 ^  R- m4 x; sSTR R0,[R1]                ;修改后再将寄存器R0的值赋予变量globvar; h. ]# |: b4 q# x
MOV PC,LR
9 |; k% q7 U8 R9 i; D- xEND

该用户从未签到

5#
发表于 2016-7-15 15:01 | 只看该作者
Haiting32451 发表于 2016-7-13 17:11
& M8 ^% b( ^( |% @支持一下,很不错哦!
, m- w2 o$ ]8 \% W
谢谢分享,不错哦% }, U, Y! `, ]

该用户从未签到

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

该用户从未签到

3#
发表于 2016-7-14 14:20 | 只看该作者
路过捧场,谢谢分享!$ U- Y. [3 z: D/ A

该用户从未签到

2#
发表于 2016-7-13 17:11 | 只看该作者
支持一下,很不错哦!+ \+ q' e5 _# J; t

点评

谢谢分享,不错哦  详情 回复 发表于 2016-7-15 15:01
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 05:06 , Processed in 0.156250 second(s), 25 queries , Gzip On.

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

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

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