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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
汇编语言程序可通过地址间访问在C语言程序中声明的全局变量。通过使用IMPORT关键词引入全局变量,并利用LDR和STR指令根据全局变量的地址来访问它们。对于不同类型的变量,需要采用不同选项的LDR和STR指令:
2 X! i5 Y7 e. D3 T# W/ c4 `unsigned char   LDRB/STRB( y; W+ Q* R2 v
unsigned short  LDRH/STRH/ L" t! C  a( r7 Q6 t6 P
unsigned int    LDR/STR% o1 C7 \! n2 D/ }1 e7 Q8 b, l# i
char            LDRSB/STRSB) Y$ _0 U0 f% I! A0 D
short           LDRSH//STRSH. s9 Z. E& P2 j+ k4 h5 r
对于结构,如果知道各个成员的偏移量,则可通过加载和存储指令进行访问。如果结构所占空间小于8个字,则可用LDM和SRM一次性读/写。
1 [8 |  V, O$ ~/ [8 `下面是一个在汇编语言程序中访问C语言程序全局变量的例子,它读取全局变量globvar,并将其加2后写回。程序中变量globvar是在C语言程序中声明的全局变量。
) R. p: D! S' q* Y6 q( y示例    C语言程序全局变量在汇编语言程序中的访问。
* s7 J: C9 f2 y* N+ fAREA globals,CODE,READONLY
1 I/ X0 E6 Z# P, w  Y* H6 j( }. REXPORT asmsubroutine        ;用EXPORT伪操作声明该变量可被其他文件引& m- `/ O8 B5 i* c8 |0 z1 I! s- S
                            ;用,相当于声明了一个全局变量
# x5 H9 |! }1 S6 ]IMPORT  globvar             ;用IMPORT伪操作声明该变量时在其他文件中定
5 N1 ^! A! C; B* `( [1 d                            ;义的,在本文件中可能要用到该变量
0 z+ [# P' f, ~# I" D% Basmsubroutine, B& }& D- k% o: d2 V0 p# x
LDR R1,=globvar             ;从文字池读globvar的地址,并将其保存到R17 v% N/ k; e( U& w6 Q; U
LDR R0,[R1]                ;再将其值读入到寄存器R0中+ H2 P8 R# B9 k1 N; ]
ADD R0,R0,#2  
' V1 q4 H& |" u3 HSTR R0,[R1]                ;修改后再将寄存器R0的值赋予变量globvar
+ k* o# F+ b6 ]7 o: _- t5 o/ ~8 ?MOV PC,LR. v5 P, y3 z" g
END

该用户从未签到

2#
发表于 2016-7-13 17:11 | 只看该作者
支持一下,很不错哦!' u0 o5 V9 L" j1 A( e  W7 E$ x

点评

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

该用户从未签到

3#
发表于 2016-7-14 14:20 | 只看该作者
路过捧场,谢谢分享!
% x9 p& Y) _$ m8 l# T( H+ D

该用户从未签到

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

该用户从未签到

5#
发表于 2016-7-15 15:01 | 只看该作者
Haiting32451 发表于 2016-7-13 17:11
% f+ V$ }) w, K4 h" q: k支持一下,很不错哦!
! b( v8 g/ ?; ^" w' J
谢谢分享,不错哦' B, R* m/ U" U; e9 N
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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